84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
在网上找邮箱正则验证,多种多样,据说这个是最正宗的,求大手给讲解下具体含义。
/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
跪谢!!
小伙看你根骨奇佳,潜力无限,来学PHP伐。
最左和最右的两个斜杠/是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]
+
([._\\-]*[a-z0-9])*中:[._\\-]表示英文句点、下划线、反斜杠、减号中的任意一个字符(因为减号在正则中有特殊含义,所以需要用\-转义)*表示之前的部分出现任意次数(0次或多次)所以小括号内的意思就是:一个英文字母,并且在这个英文字母前允许出现上述的四种字符,比如a -b \c .--d这些都是合法的小括号后面跟了一个*表示小括号内的模式可以出现任意次,这样就规定了邮箱名内允许出现句点减号反斜下划,但这些符号之后必须跟着英文字母
([._\\-]*[a-z0-9])*
[._\\-]
*
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]+[-a-z0-9]*[a-z0-9]+.)
([a-z0-9]+[-a-z0-9]*[a-z0-9]+\.)
{1,63}
[a-z0-9]+$表示小写字母至少出现一次后结尾(美元是结尾的意思),这里是在匹配com net cn这种后缀
[a-z0-9]+$
com net cn
最后推荐https://regexper.com/用于图形化解释正则匹配
只能祭出这个: 正则表达式30分钟入门教程
了解正则表达式你就会看得懂这些了,一个邮箱正常的格式是xxx123@123xxx.com,@的左边有可能包含下划线(_)、连字符(-)、(.)、(\)这些符号,但只能放在数字或字母的中间,并且(@)与(.)之间需要两位字符以上,这个正则就是表达这个意思。
var reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; reg.test("abc-123@gmail.com"); //true reg.test("a\-_.a@gmail.com"); //true reg.test("a_@com"); //false reg.test("a_@.com"); //false reg.test("a_1@a.com"); //false .前面的域名至少要有两个字符 reg.test("a_1@aa.com"); //true
直接<input type="email">系统自带验证
<input type="email">
最左和最右的两个斜杠
/
是javascript的字面量写法,表示不必转义,这样正则中的比如\
就不必写成\\
了扔掉两端的斜杠(这是属于js的范畴)后,来看正则部分:
^
表示一行开头[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
这种后缀最后推荐https://regexper.com/用于图形化解释正则匹配
只能祭出这个: 正则表达式30分钟入门教程
直接
<input type="email">
系统自带验证