Регулярное выражение для проверки E-mail

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

Таблица допустимых символов в названии E-mail

Почтовый сервис Допустимые символы Количество символов Первый символ Последний символ Два спецсимвола подряд1 Регистр
AOL
  • @aol.com
[.0-9a-z_]{3,32}[a-z][0-9a-z]ЗапрещеноНе учитывается
FASTMAIL2 (домены) [0-9a-z_]{3,30}[a-z][0-9a-z_]РазрешеноТолько строчные
GMAIL
  • @gmail.com
[.0-9a-z]{6,30}[0-9a-z][0-9a-z]ЗапрещеноНе учитывается
HUSHMAIL
  • @hush.ai
  • @hush.com
  • @hushmail.com
  • @hushmail.me
  • @mac.hush.com
[-.0-9a-z_]{1,45}[0-9a-z][0-9a-z]Нельзя повторять одинаковые спецсимволы, однако можно их чередоватьНе учитывается
LYCOS
  • @lycos.com
[-.0-9a-z_] (между цифрами точка не допускается){1,32}[a-z][0-9a-z]Разрешено использовать два и более идущих подряд знаков подчёркивания и его чередование с дефисом (чередование с точкой запрещено)Не учитывается
MAIL.RU
  • @bk.ru
  • @inbox.ru
  • @list.ru
  • @mail.ru
[-.0-9a-z_]{4,31}[0-9a-z][0-9a-z]ЗапрещеноНе учитывается
META.UA
  • @meta.ua
[-.0-9a-z_]{4,20}[a-z][0-9a-z]РазрешеноНе учитывается
MICROSOFT
  • @hotmail.com
  • @live.com
  • @outlook.com
[-.0-9a-z_]{1,64}[a-z][-0-9a-z_]Разрешается последовательность из «_» или «-», однако использование двух точек подряд запрещеноНе учитывается
RAMBLER
  • @autorambler.ru
  • @lenta.ru
  • @myrambler.ru
  • @r0.ru
  • @rambler.ru
  • @ro.ru
[-.0-9a-z_]{3,32}[0-9a-z][0-9a-z]ЗапрещеноНе учитывается
YAHOO
  • @rocketmail.com
  • @yahoo.com
  • @ymail.com
[.0-9a-z_] (точку разрешается использовать один раз){4,32}[a-z][0-9a-z]ЗапрещеноНе учитывается
YANDEX
  • @narod.ru
  • @ya.ru
  • @yandex.by
  • @yandex.com
  • @yandex.kz
  • @yandex.ru
  • @yandex.ua
[-.0-9a-z]{1,30}[a-z][0-9a-z]ЗапрещеноНе учитывается
ИТОГО [-.0-9a-z_]{1,64}3[0-9a-z][-0-9a-z_]Разрешено+/-2
  1. Спецсимволы — это не буквенно-цифровые символы, которыми, в данном случае, являются: дефис (-), точка (.) и знак подчёркивания (_).
  2. При регистрации на сервисе «FASTMAIL» неверновводимые символы исправляются автоматически или не печатаются вообще, поэтому в строке «ИТОГО» в столбце «Регистр» указано значение «+/-», то есть регистр можно не учитывать.
  3. Так как «простым смертным» имя почтового ящика состоящее из трёх и менее символов вряд ли досталось, то можно смело использовать {4,64}.

Исходя из данных таблицы, подобрать необходимое регулярное выражения, учитывая возможный контингент (русскоязычные, англоязычные и так далее) посетителей сайта, труда не составит.

Как вариант, можно ограничить выбор почтового домена или доменной зоны, предоставляя пользователю возможность выбрать его из выпадающего списка: @

@ .

Готовое выражение

Итак, прежде чем составлять «регулярку», рекомендую прочитать эту статью, вывод которой в том, что не стоит проверять E-mail громоздким регулярным выражением, создавая себе, тем самым, дополнительную головную боль; достаточно использовать один из следующих вариантов, а основную проверку проводить, посылая на введённый пользователем адрес письмо с подтверждением: =@=
=.+?@.+?\..+=i

Чтобы не потерять мысль, которая пришла мне в голову при написании данного поста, отмечу один из вариантов проверки E-mail, который 100% пропустит только корректный адрес: 1) разделяем имя ящика и почтовый домен; 2) по почтовому домену выбираем регулярное выражение, которым проверяем имя. Я не рекомендую использовать этот метод, однако могут быть случаи, когда в этом будет необходимость. Протестировать скрипт можно здесь.