电子邮件正则表达式允许末尾无效的附加字符

时间:2012-09-13 08:54:36

标签: regex email

  

可能重复:
  Using a regular expression to validate an email address

我有一个用于验证电子邮件地址的正则表达式。它工作得很好,但如果我在最后添加了任何字符,它就不会起作用。例如,如果我尝试....“eee”它会将其标记为无效,如果我尝试通过“ddd@dddd.com”,但如果我尝试“dfdfd@Dfdf.comd”它也会通过。有没有什么可以阻止这些无效字符在最后被拾取?

这是我的正则表达式:

^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$

由于

2 个答案:

答案 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