正则表达式 验证邮件地址

不懂正则表达式,因此直接去网上搜现成的正在表达式,结果掉坑里面了正则表达式

这个是网上找的表达式:服务器

^([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个这样的字符串,也就是前面说的重复的结构

而后测试,发现貌似还行

至于不能出现的特殊字符,八度后没发现什么有用信息,就没考虑。

相关文章
相关标签/搜索