Internet电子邮件验证表达式验证所有内容

时间:2011-03-21 20:51:57

标签: asp.net regex

我正在验证asp.net页面中的输入,但问题是它验证了电子邮件,如hasangürsoy@şşıı.com

我的代码是:

if (Regex.IsMatch(email, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
{ valid }
else { invalid }

修改 我之前写过question特别是为了验证包括土耳其语字符在内的电子邮件地址,但现在我不希望用户能够输入带有土耳其语字符的邮件,因为用户大多是错误输入土耳其语字符而我无法发送邮寄到这些地址。

3 个答案:

答案 0 :(得分:4)

为什么不直接使用内置System.Net.Mail.MailAddress类进行电子邮件验证?

bool isValidEmail = false;
try
{
    var email = new MailAddress("hasangürsoy@şşıı.com");
    isValidEmail = true;
{
catch (FormatException x)
{
    // gets "An invalid character was found in the mail header: '.'."
}

答案 1 :(得分:3)

RFC3692详细介绍了如何正确验证目前只能正确处理ASCII字符的电子邮件地址。然而,这是由于变化,因此您的验证应尽可能放松。

我可能会使用如下表达式:

.+@.+

这可以确保你不会让人们离开,因为你的正则表达式让他们别无选择。

如果电子邮件很重要,您应该通过发送电子邮件到包含链接的提供地址进行验证。

答案 2 :(得分:3)