Настройте регулярное выражение электронной почты, чтобы разрешить вставку дефисов

1

У меня есть регулярное выражение электронной почты, которое выглядит так:

/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/

Задача состоит в том, чтобы разрешить вставить дефис "-" перед символом @, но с некоторыми ограничениями:

1) Электронная почта не может начинаться с дефиса

2) Hyphen не может быть до символа @.

3) 2 дефиса в строке "-" не допускаются.

  • 1
    Попробуйте заменить первый \. с [.-] .
  • 0
    @gmail.com) WiktorStribiżew Почти работает. Но я все еще могу вставить 2 дефиса подряд, и письма с несколькими дефисами должны работать (например, [email protected])gmail.com)
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

Вы можете заменить первый \. с классом символа [.-] который соответствует . или -:

^[_a-z0-9]+(?:[.-][_a-z0-9]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,10}$
              ^^^^

См. Демо-версию regex

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

0

Вы можете попробовать следующее:

^[_a-z0-9]+(\.[_a-z0-9]+)*@(?!.*--)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$

3) 2 дефиса в строке "-" не допускаются.

См. Https://regex101.com/r/r7iCEN/1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню