不懂正则表达式,因此直接去网上搜现成的正在表达式,结果掉坑里面了正则表达式
这个是网上找的表达式:服务器
^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$单元测试
[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?学习
单元测试的时候没问题,而后Tester跑case时发现“卡死”现象,两个都会卡死测试
tester输入是:sadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfassfasdfasdfasdfasdfasdfasdadfasdgaewegwegwegwedfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasspa
总共255个字符(别纠结没限制输入长度)server
因而想,仍是算了,本身摸索一下,百度百科邮件地址格式,他这样子说的:文档
一般电子邮件地址的格式为:user@mail.server.name,其中 user 是收件人的用户名,mail.server.name是收件人的电子邮件服务器名,它还能够是域名或十进制数字表示的 IP 地址。字符串
也就是用户名和服务器地址,而后用@隔开,而后下载了一个叫“DEELX正则引擎文档”的文档学习正则表达式写法,文档内容不多,看了基本语法以后,本身定义了匹配规则:域名
1.用户名第一个字符必须是数字或字母,其余用\w匹配,\w能够匹配任何一个字母或者数字或者下划线
2用户名后必须是@符号
3.@符号后必须是数字或字母字符串,而后字符串能够被小点符号分割,而且相邻字符不能是两个小点
一句话的说关键就是是服务器地址的匹配,将服务器地址拆分红两块mail和.server.name,而后.server.name结构是重复的,可视为小点开头而后接数字或字母的重复结构,而后就很好写表达式了:^[\da-zA-Z][\w]*@[\da-zA-z]+(\.[\da-zA-z]+){1,9}$
棕色:必须以数字或字母开头
红色:匹配任一一个\w
绿色:至少有一个数字或字符
浅青色:是一个子表达式,表示匹配以小点开始并以数字或字母结尾的字符串
紫色:浅青色这个子表达式至少匹配1个,而且最多匹配9个这样的字符串,也就是前面说的重复的结构
而后测试,发现貌似还行
至于不能出现的特殊字符,八度后没发现什么有用信息,就没考虑。