Регулярное выражение для проверки E-mail
Прежде чем составлять регулярное выражение для проверки адреса электронной почты, нужно определить символы, которые допускаются в названии почтовых ящиков.
Таблица допустимых символов в названии E-mail
Почтовый сервис | Допустимые символы | Количество символов | Первый символ | Последний символ | Два спецсимвола подряд1 | Регистр |
---|---|---|---|---|---|---|
AOL
|
[.0-9a-z_] | {3,32} | [a-z] | [0-9a-z] | Запрещено | Не учитывается |
FASTMAIL2 (домены) | [0-9a-z_] | {3,30} | [a-z] | [0-9a-z_] | Разрешено | Только строчные |
GMAIL
|
[.0-9a-z] | {6,30} | [0-9a-z] | [0-9a-z] | Запрещено | Не учитывается |
HUSHMAIL
|
[-.0-9a-z_] | {1,45} | [0-9a-z] | [0-9a-z] | Нельзя повторять одинаковые спецсимволы, однако можно их чередовать | Не учитывается |
LYCOS
|
[-.0-9a-z_] (между цифрами точка не допускается) | {1,32} | [a-z] | [0-9a-z] | Разрешено использовать два и более идущих подряд знаков подчёркивания и его чередование с дефисом (чередование с точкой запрещено) | Не учитывается |
MAIL.RU
|
[-.0-9a-z_] | {4,31} | [0-9a-z] | [0-9a-z] | Запрещено | Не учитывается |
META.UA
|
[-.0-9a-z_] | {4,20} | [a-z] | [0-9a-z] | Разрешено | Не учитывается |
MICROSOFT
|
[-.0-9a-z_] | {1,64} | [a-z] | [-0-9a-z_] | Разрешается последовательность из «_» или «-», однако использование двух точек подряд запрещено | Не учитывается |
RAMBLER
|
[-.0-9a-z_] | {3,32} | [0-9a-z] | [0-9a-z] | Запрещено | Не учитывается |
YAHOO
|
[.0-9a-z_] (точку разрешается использовать один раз) | {4,32} | [a-z] | [0-9a-z] | Запрещено | Не учитывается |
YANDEX
|
[-.0-9a-z] | {1,30} | [a-z] | [0-9a-z] | Запрещено | Не учитывается |
ИТОГО | [-.0-9a-z_] | {1,64}3 | [0-9a-z] | [-0-9a-z_] | Разрешено | +/-2 |
- Спецсимволы — это не буквенно-цифровые символы, которыми, в данном случае, являются: дефис (-), точка (.) и знак подчёркивания (_).
- При регистрации на сервисе «FASTMAIL» неверновводимые символы исправляются автоматически или не печатаются вообще, поэтому в строке «ИТОГО» в столбце «Регистр» указано значение «+/-», то есть регистр можно не учитывать.
- Так как «простым смертным» имя почтового ящика состоящее из трёх и менее символов вряд ли досталось, то можно смело использовать {4,64}.
Исходя из данных таблицы, подобрать необходимое регулярное выражения, учитывая возможный контингент (русскоязычные, англоязычные и так далее) посетителей сайта, труда не составит.
Как вариант, можно ограничить выбор почтового домена или доменной зоны, предоставляя пользователю возможность выбрать его из выпадающего списка:
@
@
.
Готовое выражение
Итак, прежде чем составлять «регулярку», рекомендую прочитать эту статью, вывод которой в том, что не стоит проверять E-mail громоздким регулярным выражением, создавая себе, тем самым, дополнительную головную боль; достаточно использовать один из следующих вариантов, а основную проверку проводить, посылая на введённый пользователем адрес письмо с подтверждением:
=@=
=.+?@.+?\..+=i
Чтобы не потерять мысль, которая пришла мне в голову при написании данного поста, отмечу один из вариантов проверки E-mail, который 100% пропустит только корректный адрес: 1) разделяем имя ящика и почтовый домен; 2) по почтовому домену выбираем регулярное выражение, которым проверяем имя. Я не рекомендую использовать этот метод, однако могут быть случаи, когда в этом будет необходимость. Протестировать скрипт можно здесь.