可能重复:
使用正则表达式验证电子邮件地址
我有一个用于验证电子邮件地址的正则表达式。它工作得很好,但如果我在最后添加了任何字符,它就不会启动。例如,如果我尝试....“eee”,它会将其标记为无效,如果我尝试“ddd@dddd.com”,则通过,但如果我尝试“dfdfd@Dfdf.comd”,它也会通过。有什么办法可以阻止这些无效字符最后被拾取吗?
这是我的正则表达式:
^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$
谢谢
可能重复:
使用正则表达式验证电子邮件地址
我有一个用于验证电子邮件地址的正则表达式。它工作得很好,但如果我在最后添加了任何字符,它就不会启动。例如,如果我尝试....“eee”,它会将其标记为无效,如果我尝试“ddd@dddd.com”,则通过,但如果我尝试“dfdfd@Dfdf.comd”,它也会通过。有什么办法可以阻止这些无效字符最后被拾取吗?
这是我的正则表达式:
^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$
谢谢
你可以用一个列表来检查常见的结尾,(com|uk|org|gov)
但是有太多的变化,检查它们都不适合正则表达式。您要么提取顶级域并对照列表进行检查,要么信任您的用户。
好吧,您的模式必须知道所有有效的后缀。
用于验证符合标准的电子邮件地址的正则表达式实际上非常复杂。查看http://www.regular-expressions.info/email.html以获取有关如何实现此目的的一些指示。
“短”的答案(取自上面的链接,没有测试它,你可能需要调整它以适应你的正则表达式实现):
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b
如您所见,该模式还对有效后缀进行了某种白名单。
编辑: 或者只是查看这个答案,很好的解释和官方标准正则表达式的参考(似乎):使用正则表达式来验证电子邮件地址