Лучшее регулярное выражение для валидации email в web формах

/[^@]+@[^@\.]+\.[^@]+/

Оговорка “на клиенте” сделана не просто так. Задача валидации на клиенте – подсказать пользователю, где он ошибся в написании email-а. Важно случайным образом не запретить пользователю с непредусмотренным емейлом воспользоваться формой. Учитывая то, какие варианты емейла могут быть (неожиданные домены, появляющиеся по пучку каждый месяц, ip адреса в качестве домена, и символы точки и симполы +, и другие неизвестные широкому обывателю вещи), напрашивается вывод, что лучшая валидация проверит емейл на наличие текста вида текст-собачка-текст-точка-текст.

Share
Send
3 comments
Илья Панасенко

я бы немного проапдейтил: /[^@]+@[^@.]+\.[^@.]+/

Дмитрий Подгорный

Согласен, что можно не экранировать точку. Однако в последнем блоке точка не нужна (тогда под регулярку не будут попадать емейлы на доменах второго уровня: http://regexr.com/3asag

Итого: /[^@]+@[^@.]+\.[^@]+/

Илья Панасенко

согласен. тогда можно еще добавить начало-конец строки, и будет идеально :)
/^[^@]+@[^@.]+\.[^@]+$/

Станислав

Вообще не было надобности если честно ни разу на стороне клиента. Обычно лучше для ввода использовать нативный type=“email”.

Дмитрий Подгорный

Ты прав насчет использования type=“email”, у этого атрибута хорошая поддержка http://caniuse.com/#search=email.

Popular