可能重复:
Using a regular expression to validate an email address
我有一个用于验证电子邮件地址的正则表达式。它工作得很好,但如果我在最后添加了任何字符,它就不会起作用。例如,如果我尝试....“eee”它会将其标记为无效,如果我尝试通过“ddd@dddd.com”,但如果我尝试“dfdfd@Dfdf.comd”它也会通过。有没有什么可以阻止这些无效字符在最后被拾取?
这是我的正则表达式:
^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$
由于
答案 0 :(得分:1)
您可以使用(com|uk|org|gov)
等列表检查公共结尾,但有so many variations检查所有列表不适合正则表达式。您可以拉出顶级域名并根据列表进行检查,也可以信任您的用户。
答案 1 :(得分:0)
好吧,你的模式必须知道所有有效的后缀。
验证符合标准的电子邮件地址的正则表达式实际上非常复杂。查看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
如您所见,该模式还为有效后缀执行某种白名单。
修改强> 或者只是查看这个答案,很好的解释和对官方标准正则表达式的引用(似乎):Using a regular expression to validate an email address