Как объединить регулярные выражения в Swift? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть следующие отдельные регулярные выражения. Я хочу объединить их, используя условие AND, я использую их для проверки пароля

. [A-Z] +. - проверить прописные буквы (минимум одна заглавная буква)

. [0-9] +. - подтвердить номер (по крайней мере один номер)

. [a-z] +. - проверить нижний регистр (один минимум нижнего регистра)

. {8,} - проверить минимальный символ 8

. [^ A-Za-z0-9]. - проверить специальный символ (по крайней мере, один специальный символ)

(.) \ 1 - проверка последовательных символов (без последовательных символов)

Сейчас я проверяю каждый символ отдельно, но я хочу сделать это только в одной функции

Я попробовал следующий способ объединения

/ ^ ((.) \ 1) (. [AZ] +. ) (*. * 1030 [AZ] +. ) (. [0-9] +. ) (. [^ A-Za-z0-9]. ). * $ /

Выше не все выражения, но я пытаюсь показать, как я сделал.

1 Ответ

2 голосов
/ 21 мая 2019

Один из вариантов - использовать набор положительных взглядов, используя отрицательные классы символов :

^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=[^0-9]*[0-9])(?!.*(.)\1)(?=[a-zA-Z0-9]*[^A-Za-z0-9\s])\S{8,}$

Это будет соответствовать:

  • ^ Начало строки
  • (?=[^A-Z]*[A-Z]) Подтвердите прописные буквы
  • (?=[^a-z]*[a-z]) Утвердить строчными
  • (?=[^0-9]*[0-9]) цифра подтверждения
  • (?!.*(.)\1) Не утверждать последовательный символ
  • (?=[a-zA-Z0-9]*[^A-Za-z0-9\s]) Утвердить символ, отличный от указанного, включая символ пробела (при условии, что он не будет разрешен)
  • \S{8,} Соответствует 8+ раз непробельному символу
  • $ Конец строки

Regex demo

Обратите внимание, что \S для разрешенных символов - это широкое соответствие, вы можете указать, что вы хотите сопоставить, используя класс символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...