0

可能重复:
使用正则表达式验证电子邮件地址

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

这是我的正则表达式:

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

谢谢

4

2 回答 2

1

你可以用一个列表来检查常见的结尾,(com|uk|org|gov)但是有太多的变化,检查它们都不适合正则表达式。您要么提取顶级域并对照列表进行检查,要么信任您的用户。

于 2012-09-13T09:03:46.740 回答
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

如您所见,该模式还对有效后缀进行了某种白名单。

编辑: 或者只是查看这个答案,很好的解释和官方标准正则表达式的参考(似乎):使用正则表达式来验证电子邮件地址

于 2012-09-13T09:01:30.347 回答