ASFORJAVASCRIPT Telegram 754
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 сервером потребует много меньше ресурсов.
👍363🙏2🔥1



tgoop.com/AsForJavaScript/754
Create:
Last Update:

О валидации 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 сервером потребует много меньше ресурсов.

BY As For JS




Share with your friend now:
tgoop.com/AsForJavaScript/754

View MORE
Open in Telegram


Telegram News

Date: |

But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." fire bomb molotov November 18 Dylan Hollingsworth yau ma tei Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. Each account can create up to 10 public channels
from us


Telegram As For JS
FROM American