TGViewer
As For JS As For JS @asforjavascript · 3.07K subscribers
Post #754 4.66K
As For JS - Talks Приветствую, подскажите пожалуйста насчет валидации Email. Помню вы неоднократно обращали внимание на кривые RegExp-ы которые проверяют Email на корректность. Можете ли подсказать где посмотреть корректный, заранее спасибо
О валидации email адреса.

Короткий ответ
При помощи одного регулярного выражения, провести валидацию EMail, в соответствии с текущим стандартом RFC - невозможно.

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

Исключение PCRE регулярные выражения, которых нет в JS.


Длинный ответ или, а что делать
Сначала спросить себя - а зачем мне это надо?

Ответов может быть два:
1) я пишу свой smtp севрер
2) я решаю задачу, которая связанна с например фронтендом, где я хочу уберечь пользователя от ошибок при вводе емаил.

В случае 1 - у Вас нет выбора. Вы обязаны реализовывать всю спецификацию RFC для EMail адресов.
Замечу, что даже сейчас не все сервера это умеют делать.

В случае 2 - стандартным решением сейчас является:
либо использование html5 input type email

либо использование какого либо очень простого алгоритма, который покрывает большинство кейсов связанных с типичными ошибками пользователя. Например просто на наличие символа @ в строке. Или на набор типичных опечаток - в конце строки есть gmail а точки перед ним нет. Где-то есть даже такой проект с набором типичных очепаток.

После чего на серверной части происходит отправка письма, на частично валидированный EMail.

Те кто хочет большей интерактивности, на сервере делает запрос к SMTP серверу формируя отправку и на момент передачи адреса контролируют ответ, который может содержать сообщение о ошибке. Чего достаточно для того чтобы вернуть ответ о невалидном EMail.


Другим способом является какой нибудь элемент интереактивности, который требует повтого ввода email. С запретом на копи пейст и последующим сравнением обоих строк.



О чем следует помнить
1) Валидация EMail согласно современному RFC чрезвычайно сложный не тривиальный механизм.

2) Адрес может содержать практически все символы стандарта UNICODE в том числе и региональные (иероглифы, быть написаным справа налево и т.д.)

3) Не нужно делать лишнюю работу, когда это уже сделали за вас (работающий smtp сервер). Пользуйтесь им, если Вам нужна максимальная интерактивность. Реализация протокола взаимодействия с SMTP сервером очень простая задача.

4) Познакомьтесь с input type email


Вместо ИГОГО
Если задача валидации продиктована необходимостью взаимодейтсвовать с пользователем, то наиболее корректным и простым решением является - самый простой из возможной алгоритмов контроля введенной информации на клиенте, которая реагирует вопросм - проверьте все ли корректно и если уверены - нажмите да.

Плюс отправка письма с этим "частично валидированным" EMail

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

Либо мониторим логи SMTP сервера на предмет лупбека от внешнего сервера с ошибкой.
При этом прямое взаимодейтсвие с SMTP сервером потребует много меньше ресурсов.
MDN Web Docs <input type="email"> HTML attribute value - HTML | MDN <input> elements of type email are used to let the user enter and edit an email address, or, if the multiple attribute is specified, a list of email addresses.
  • 👍 37
  • ❤ 3
  • 🙏 2
  • 🔥 1
More from @asforjavascript
  1. Oct 11, 2026Гениальный Кирилл Львович Масленников о темной материи полтора часа кайфа https://youtu.be…
  2. Oct 10, 2026Два дня назад, в возрасте 90 лет умерла Маргарет Гамильтон. В один из критических моментов…
  3. Oct 9, 2026Какие несоответствия тексту песни, вы видите в клипе? Я нашел пока три. https://www.youtub…
  4. Oct 9, 2026Пусть повисит до утра. Потом удалю https://www.youtube.com/watch?v=qVs4a7K42eE&
  5. Oct 9, 2026Первое видео, где автор пытался седелать его так, чтобы все подумали на ИИ
  6. Oct 9, 2026ErrorHorror снова, пусть и не навсегда, но с нами. Єто особенно приятно констатировать в п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →