Лучшее регулярное выражение для проверки электронной почты в C#
Я видел множество регулярных выражений для разных языков программирования, которые предназначены для проверки адресов электронной почты. Я полагаю, что выражения не работают в определенных случаях, и что они либо слишком строгой или нестрогой. Что я ищу регулярное выражение, которое я могу использовать в моем коде C#, который является окончательным.
лучшее, что я нашел это
^([w.-]+)@([w-]+)((.(w){2,3})+)$
есть что-то лучше?
4 ответов
- адрес электронной почты: формат RFC 2822
Соответствует обычному адресу электронной почты. Не проверяет домен верхнего уровня.
требуется " нечувствительный к регистру" возможность быть на.
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
использование :
bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);
первый вариант (плохо из-за throw-catch, но MS будет работать для вас):
bool IsValidEmail(string email)
{
try {
var mail = new System.Net.Mail.MailAddress(email);
return true;
}
catch {
return false;
}
}
второй вариант, это читать Я знал, как проверить адрес электронной почты, пока я не прочитал RFC и спецификация RFC
эта функция C# использует регулярное выражение, чтобы оценить, является ли переданный адрес электронной почты синтаксически допустимым или нет.
public static bool isValidEmail(string inputEmail)
{
string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex re = new Regex(strRegex);
if (re.IsMatch(inputEmail))
return (true);
else
return (false);
}
Регулярное Выражение Проверки Электронной Почты
^[a-z0-9] [- a-z0-9._] +@([- a-z0-9]+.) +[a-z] {2,5}$
или
^[a-z0-9] [- a-z0-9._] +@([- a-z0-9]+[.]) +[a-z] {2,5}$
Демо Ссылке: