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

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

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

Поделиться
Отправить
2015   javascript
3 комментария
Илья Панасенко

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

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

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

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

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

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

Станислав

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

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

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

Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное