【发布时间】:2014-12-11 18:41:49
【问题描述】:
我有以下用于验证电子邮件地址的 c# 扩展方法。正则表达式来自 Microsoft 的如何:验证字符串是否采用有效的电子邮件格式页面。
我需要改进此方法,以便能够处理以分号分隔的电子邮件列表。一个有效的示例字符串的格式可能很糟糕:“;; ; ; xxx.sss.xxx ; ;; xxx.sss.xxx;”
/// <summary>
/// Validates the string is an Email Address...
/// </summary>
/// <param name="emailAddress"></param>
/// <returns>bool</returns>
public static bool IsValidEmailAddress(this string emailAddress)
{
var valid = true;
var isnotblank = false;
var email = emailAddress.Trim();
if (email.Length > 0)
{
isnotblank = true;
valid = Regex.IsMatch(email, @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$", RegexOptions.IgnoreCase);
}
return (valid && isnotblank);
}
【问题讨论】:
-
对于检查电子邮件地址是否有效的非常简单的方法,请参阅该 MSDN 示例末尾的注释:“除了使用正则表达式来验证电子邮件地址,您可以使用System.Net.Mail.MailAddress 类。要确定电子邮件地址是否有效,请将电子邮件地址传递给 MailAddress.MailAddress(String) 类构造函数。"
标签: c# regex validation email csv