Я ищу для создания политики паролей с RegEx.
Политика содержит следующие правила:
Я нашел этот шаблон, который соответствует 1):
^(.)((?!\1).)((?!\1)(?!\2).)((?!\1)(?!\2)(?!\3))
Этот шаблон соответствует 2) и 3):
^(?=.*[a-zA-Z].*)(?=.*[0-9].*)(?=.*[$&+,:;=?@#|'<>.^*()%!-].*)(.{8,})
Теперь я застрял, комбинируя эти два шаблона в один. Может ли кто-нибудь помочь здесь, пожалуйста? ;-)
Кроме того, не объединяйте их в один. Просто проверьте каждое из 3 регулярных выражений по одному. Сочетание их будет страшным и непонятным, если вам когда-либо понадобится добавить новые правила или изменить существующие правила (особенно, поскольку у вас уже есть проблемы с их объединением).
Вы можете использовать это регулярное выражение:
^(?=(.)(?!\1)(.)(?!\1)(?!\2))(?=.*[a-zA-Z])(?=\D*\d)(?=.*?[$&+,:;=?@#|'<>.^*()%!-])(.{8,})$
(?=(.)(?!\1)(.)(?!\1)(?!\2)) # Makes sure first 3 characters are unique using lookaheads