У меня есть регулярное выражение электронной почты, которое выглядит так:
/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/
Задача состоит в том, чтобы разрешить вставить дефис "-" перед символом @, но с некоторыми ограничениями:
1) Электронная почта не может начинаться с дефиса
2) Hyphen не может быть до символа @.
3) 2 дефиса в строке "-" не допускаются.
Вы можете заменить первый \.
с классом символа [.-]
который соответствует .
или -
:
^[_a-z0-9]+(?:[.-][_a-z0-9]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,10}$
^^^^
Я также удалил ненужные группировки и преобразовал группы захвата в не-захват, чтобы упорядочить сопоставление.
Вы можете попробовать следующее:
^[_a-z0-9]+(\.[_a-z0-9]+)*@(?!.*--)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$
3) 2 дефиса в строке "-" не допускаются.
\.
с[.-]
.