电子邮件验证的正则表达式。

3
可能重复:
什么是验证电子邮件地址的最佳正则表达式? 我正在使用一个要求输入电子邮件地址的表单。我使用了以下正则表达式进行验证:

.*@.*\..*

但是对于一些测试用例,如下面这个,它并不能很好地工作:

dsrasdf@@@fer@hbdf.vjif

请问有没有人能提供在 ASP.NET 中用于电子邮件验证的正则表达式,或者其他方法可行?
请您提供建议。

作为一个经验法则:在使用正则表达式中的 . 之前,请至少考虑两次。请注意,....@...... 也符合您的表达式。 - Michael
@Michael:在这种特殊情况下,宽松的验证实际上是有意义的。实际的电子邮件地址遵循高度复杂的规则,通常不值得花费过多精力去创建一个过于复杂(读作错误的)的正则表达式。例如,一些主要的免费邮件提供商不允许完全有效的“+”字符。砰。 - Dirk Vollmar
真的,使用 . 应该谨慎,并且在这种情况下仍然是错误的。在我看来,这种验证既不是“太宽松”也不是“太严格”,因为这些字符串既不是真正有效电子邮件地址的超集也不是子集。它只是错误的。 - Michael
3个回答

5

在处理这类问题时,最好依靠框架

try {
    address = new MailAddress(address).Address;
} catch(FormatException) {
    //address is invalid
}

虽然我只会说,只有在使用 .Net 4 的情况下,我相当确定早期版本会在各种有效电子邮件地址上失败。 - Hans Olsson
非常抱歉,但是自.NET 2以来,这段代码是正确的。不过必须捕获异常。[ http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx ] - Vinzz

1

我正在使用以下正则表达式进行电子邮件验证(不区分大小写):

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

我不了解 ASP,但我认为你可以这样使用它。


0
^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z{2-4}|[0-9]{1,3})(\]?)$

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接