EMail Regex — Как с проверить валидность EMail адреса?

EMail Regex

EMail Regex — как с помощью регулярного выражения проверить правильность введенного E-Mail адреса? Существует несколько стандартных регулярных выражений, а также произвольные вариации заточенные для конкретных целей. Рассмотрим все варианты и выберем лучший. Примеры будут представлены с использованием языка PERL. Так как этот язык является отцом всех регулярных выражений в современном программировании.


Простое регулярное выражение для проверки E-Mail без наличия каких-либо уязвимостей. Совпадает с любым реальным E-Mail адресом.

$_ = "[email protected]";
if(/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/){
return true;
}

Однако в крупных офисах есть свои внутренние домены и они могут не совпадать по размерности со стандартными доменами. Например [email protected] уже не подойдет к выше описанному регулярному выражению. Для таких целей можно использовать например такое регулярное выражение:

$_ = "[email protected]";
if(/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$/){
return true;
}

Но могут существовать и более длинные имена почтовых доменов например [email protected] Как быть тут? Можно использовать вот такое выражение:

$_ = "[email protected]";
if(/\b[A-Z0-9._%+-][email protected](?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b/){
return true;
}

Если ничего эдакого не требуется, то можно делать проверку валидности электронного почтового адреса по стандарту RFC 2822.

$_ = "[email protected]";
if(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/){
return true;
}

Данное регулярное выражение состоит из двух частей. До собачки (@) и после.

EMail Regex 99.9%

Если немного усовершенствовать это регулярное выражение то можно получить более короткую запись, которая будет удовлетворять 99.9% из всех используемых на сегодняшний день почтовых адресов.

$_ = "[email protected]";
if(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/){
return true;
}

Пользуйтесь на здоровье.

П.С. Если у Вас есть более рациональное выражение или способ проверки адреса на валидность, а-ля EMail Regex — то пишите в комментариях.

Поделитесь статьей:

Теги: ,

Константин

Константин

Программист, фрилансер, фотограф любитель, автолюбитель, геймер, писатель, читатель.

Отправить ответ

1 Комментарий на "EMail Regex — Как с проверить валидность EMail адреса?"

Notify of
avatar
2000
Сортировать:   новые | старые | наиболее популярные
qwq2
Гость

кууу

wpDiscuz
Весь контент, размещенный на сайте madjack.ru является интеллектуальной собственностью автора (если явно не указано обратное).
При копировании или использовании контента - обязательно указывайте ссылку на страницу с ним.
Все права защищены © Дьяков Константин Сергеевич, 2008-2015