如何使用正则表达式处理长电子邮件地址?

时间:2015-11-12 13:33:01

标签: c# regex

我有以下正则表达式用于电子邮件验证:

private const string ValidEmailRegexPattern = @"^(?:[^@\s\\(),:;<>[\]""]+|(?:(?:^|\.)""(?:[^\r\\"";]|(?:\\[\\""]))*"")+)+(?<=^.{1,64})@[^\s~!@#$%^&*()=+_{}\|;,`'""?<>]{1,256}$";

public static bool IsValidEmail(string email)
{
     return !string.IsNullOrWhiteSpace(email) && ValidEmailRegex.IsMatch(email);
}

但是当输入是有效的电子邮件时它会冻结,但最大有效长度(254个符号)如下:

"123...@gmail.com" - 254个符号,包括244个数字和@gmail.com

如何更改我的正则表达式?我希望我的程序可以处理这种类型的电子邮件地址。

1 个答案:

答案 0 :(得分:4)

您可以使用MailAddress类来验证电子邮件,而不是使用正则表达式对其进行验证。

MailAddress m = new MailAddress(email);

来自MSDN

  

而不是使用正则表达式来验证电子邮件地址,   您可以使用 System.Net.Mail.MailAddress 类。确定   电子邮件地址是否有效,请将电子邮件地址传递给   MailAddress.MailAddress(String)类构造函数。