paus
@paus
Backend-разработчик

Как исключить две точки из email-адреса, используя regexp?

Есть задание:

Напишите функцию, которая проверяет введенный пользователем e-mail на соответствие следующим правилам:
1. e-mail состоит из имени и доменной части, эти части разделяются символом "@";
2. доменная часть не короче 3 символов и не длиннее 256, является набором непустых строк, состоящих из символов a-z 0-9_- и разделенных точкой;
3. каждый компонент доменной части не может начинаться или заканчиваться символом "-";
4. имя (до @) не длиннее 128 символов, состоит из символов a-z0-9"._-;
5. в имени не допускаются две точки подряд;
6. если в имени есть двойные кавычки ", то они должны быть парными;
7. в имени могут встречаться символы "!,:", но только между парными двойными кавычками.


Есть регулярка, которую я написал:
((?!-)[A-Z0-9"\.\-_]{1,128}(?<!-)@(?!-)[A-Z0-9\-_.]{3,256}(?<!-))

Дошёл до 5-го пункта, дальше затык. Пытаюсь использовать
|(?:\.(?!\.))
в конце для исключения точек - не работает и не проверяет строку.
Как в моё решение вклинить исключение так, чтобы оно работало?
  • Вопрос задан
  • 1109 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
знаете притчу про Колумбово яйцо?

вы зачем пихаете все в одно выражение? вам же функцию нужно, а не один единственный регексп

это же очевидно из 6-7 пункта, которые в одном регекспе решить невозможно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы