2016-09-04 5 views
0

Я пытаюсь проверить адреса электронной почты. В настоящее время я использую следующее регулярное выражение для проверки адресов электронной почты, которые отлично работают. Но теперь я хочу подкрутить его и разрешить только min 2 и max 40 символов для домена-части адреса электронной почты i.e после символа @. Я попытался установить диапазон, но я думаю, что он не будет работать так. Где я иду не так?Regex для проверки адреса электронной почты

Regex:

^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})$ 
+0

См. [Это] (http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html). –

ответ

0

Проверка адреса электронной почты не является тривиальным, и ваше регулярное выражение, как он отвергает совершенно хорошие адреса электронной почты, такие как [email protected]. Если вам нужно сделать это самостоятельно, посмотрите на RFC 822 §6.

Однако в C# существует класс MailAddress с конструктором, принимающим строковый аргумент. Вы можете попытаться построить MailAddress addr = new MailAddress(emailString) и посмотреть, выбрасывает ли он FormatException. В качестве преимущества объект MailAddress имеет много полезных методов для работы с адресами электронной почты.

EDIT: Мои извинения, я пропустил, что вы пытались ограничить длину хоста. Если вы создадите MailAddress, как указано выше, то addr.Host будет содержать часть имени хоста, и вы можете проверить ее длину.