通过邮箱验证学习正则

邮箱验证的正则表达式非常多,我这里给个最正宗的,代码如下:

/^[a-z0-9]+([._\\\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/

解析:

最左和最右的两个斜杠/是javascript的字面量写法,表示不必转义,这样正则中的比如\\就不必写成\\了

扔掉两端的斜杠(这是属于js的范畴)后,来看正则部分:

^[a-z0-9]+([._\\\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$

^表示一行开头

[a-z0-9]表示一个数字字符或小写英文字母

+表示之前的部分(即[a-z0-9])至少出现一次

这样就规定了邮箱名必须以数字或字母开头

([._\\\\-]*[a-z0-9])*中:

[._\\\\-]表示英文句点、下划线、反斜杠、减号中的任意一个字符(因为减号在正则中有特殊含义,所以需要用-转义)

*表示之前的部分出现任意次数(0次或多次)

所以小括号内的意思就是:一个英文字母,并且在这个英文字母前允许出现上述的四种字符,比如a -b \\c .--d这些都是合法的

小括号后面跟了一个*表示小括号内的模式可以出现任意次,这样就规定了邮箱名内允许出现句点减号反斜下划,但这些符号之后必须跟着英文字母

@我就不多讲了,邮箱嘛~

([a-z0-9]+[-a-z0-9]*[a-z0-9]+.)

这里可能有个错误,最后的句点前应该加一个反斜杠转义,这样才表示句点(其实前面4个符号那个地方写标准点的话也应该转义的,不过那里是在中括号里面,问题不大,但这里就会错掉了)。所以应该改成:

([a-z0-9]+[-a-z0-9]*[a-z0-9]+\\.)

小括号内表示的是以小写字母开头,以小写字母加句点结尾,中间部分可以使小写字母或减号(就是在匹配域名嘛)

{1,63}表示前面的部分重复至少1次至多63次,就是在匹配一级域名、二级域名……六十三级域名嘛

[a-z0-9]+$表示小写字母至少出现一次后结尾(美元是结尾的意思),这里是在匹配com net cn这种后缀

相关学习文章(搜索引擎搜索极客教程 可看到具体链接)

  1. Regexper 用于图形化解释正则匹配
  2. 验证输入框值的常用正则表达式
  3. 正则表达式30分钟入门教程


分享到:


相關文章: