Предотвратить повторение специального символа и указать c count с помощью RegEx для электронной почты - PullRequest
0 голосов
/ 17 июня 2020

Как я могу использовать RegEx для проверки следующего шаблона:

  1. Длина строки не имеет значения.

  2. Знак специального символа (-) не должен повторяться последовательно .

  3. Знак специального символа (-) не должен встречаться более чем дважды во всей строке и (. ) подпишите, чтобы не присутствовать более двух раз перед доменом почты

Примеры случаев:

Соответствие:

Jessica-Parker@gmail.com
Jessica-Parker@gmail.com
Jessica-Parker-Smith@gmail.com
Jessica.Parker-Smith@gmail.com
Jessica.Parker.Smith@gmail.com

Несовпадение:

Jessica--Parker@gmail.com
Jeff--smith-Parker@gmail.com
Jessica-Parker--@gmail.com
Jessica-Parker-@gmail.com
Jessica.P.Jane.Smith@gmail.com
Jessica..P.Jane.Smith@gmail.com

Борясь с третьей частью, я понял Первые две части как:

^(?!.*(-)\1{2})(\w[\w\.-]*@[a-zA-Z]+\.[a-zA-Z]+)\b

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете использовать

^(?![^@]*([-.])\1)(?![^@]*([-.])(?:[^@]*\2){2})\w(?:[\w.-]*\w)?@(?:[a-zA-Z]+\.)+[a-zA-Z]+$

См. демонстрацию регулярных выражений .

Подробности

  • ^ - начало строки
  • (?![^@]*([-.])\1) - не допускается двойной дефис / точка после 0 или более символов, кроме @,
  • (?![^@]*([-.])(?:[^@]*\2){2}) - не более 3 - / . символы после любых 0 или более символов, кроме @, разрешены
  • \w - символ слова
  • (?:[\w.-]*\w)? - необязательная последовательность из 0 или более слов, . или - символы, за которыми следует слово char
  • @ - a @ char
  • (?:[a-zA-Z]+\.)+ - 1 или несколько вхождений 1+ букв, за которыми следует точка
  • [a-zA-Z]+ - 1+ букв
  • $ - конец строки.
...