RegEx: первые три символа уникальны + дополнительное совпадение

1

Я ищу для создания политики паролей с RegEx.

Политика содержит следующие правила:

  1. Первые три символа должны быть уникальными
  2. Пароль должен содержать не менее 8 символов
  3. Пароль должен содержать как минимум одну букву, одну цифру и один специальный символ (белого списка)

Я нашел этот шаблон, который соответствует 1):

^(.)((?!\1).)((?!\1)(?!\2).)((?!\1)(?!\2)(?!\3))

Этот шаблон соответствует 2) и 3):

^(?=.*[a-zA-Z].*)(?=.*[0-9].*)(?=.*[$&+,:;=?@#|'<>.^*()%!-].*)(.{8,})

Теперь я застрял, комбинируя эти два шаблона в один. Может ли кто-нибудь помочь здесь, пожалуйста? ;-)

  • 1
    Вы можете рассмотреть что-то, что не является регулярным выражением.
  • 0
    Есть ли причина, почему вы не можете применить несколько регулярных выражений?
Показать ещё 1 комментарий
Теги:
passwords
policy

2 ответа

1

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

0

Вы можете использовать это регулярное выражение:

^(?=(.)(?!\1)(.)(?!\1)(?!\2))(?=.*[a-zA-Z])(?=\D*\d)(?=.*?[$&+,:;=?@#|'<>.^*()%!-])(.{8,})$

Демо-версия RegEx

(?=(.)(?!\1)(.)(?!\1)(?!\2)) # Makes sure first 3 characters are unique using lookaheads

Ещё вопросы

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