Есть задание:
Напишите функцию, которая проверяет введенный пользователем 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-го пункта, дальше затык. Пытаюсь использовать
|(?:\.(?!\.))
в конце для исключения точек - не работает и не проверяет строку.
Как в моё решение вклинить исключение так, чтобы оно работало?