Regex повторяющиеся буквы - PullRequest
       6

Regex повторяющиеся буквы

1 голос
/ 25 апреля 2020

Как я могу не позволить пользователю вводить слово с повторяющимися буквами. У меня уже есть регистр для специальных символов?

Я пробовал это, и это работает для специальных символов, разрешенных в тексте.

^(?!.*([ \-])\1)\w[a-zA-z0-9 \-]*$

3 Мой адрес -

Не будет работать (-)

Это то, что я пытаюсь сделать для писем (?!.*([a-z])\1{4}) но это не работает, это нарушает регулярное выражение.

(?!.*([ \-])\1)(?!.*([a-z])\1{4})\w[a-zA-z0-9 \-]*$

Это должно предотвратить любые повторяющиеся буквы, когда они были введены 4 раза подряд, например, это для адрес и как он есть, я могу ввести.

3 My Adddddddddd

1 Ответ

1 голос
/ 25 апреля 2020

Вам нужно использовать \2 обратную ссылку во втором просмотре, и не забывайте использовать [a-zA-Z], а не [a-zA-z] в потребляющей части:

^(?!.*([ -])\1)(?!.*([A-Za-z])\2{3})\w[a-zA-Z0-9 -]*$

См. regex demo .

Первая группа захвата ([ -]) в первом запросе, второй просмотр содержит вторую группу, поэтому необходимо \2.

Поскольку вы хотите отфильтровать совпадения как минимум с 4 одинаковыми последовательными буквами, вам нужно ([A-Za-z])\2{3}, а не {4}.

Кроме того, если вы планируете в начале совпадать с di git, рассмотрите возможность замены \w на \d .

Сведения о регулярном выражении

  • ^ - начало строки
  • (?!.*([ -])\1) - два одинаковых последовательных пробела или дефиса не допускаются в строка
  • (?!.*([A-Za-z])\2{3}) - в строке не допускаются четыре одинаковые последовательные буквы
  • \w - первый символ должен быть буквой, di git или _
  • [a-zA-Z0-9 -]* - 0+ букв, цифр, пробелов или дефисов
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...