Мне нужно регулярное выражение для надежности пароля, которое имеет 3 различных правила:
- Минимум 3 из 4 групп (строчные, прописные, цифры, специальные символы)
- Минимум 8 символов
- Первый символ не '{' (некоторые ограничения продукта, где это реализовано)
Пока у меня есть регулярное выражение, которое выполняет первые два правила.Кроме того, я смог расширить регулярное выражение, чтобы ограничить первый символ.Однако моя текущая проблема заключается в том, что когда я ограничиваю первый символ, это не учитывается в отношении первого правила.Например, следующий пароль не проходит: $ MyPassword
Исходное правило: ^((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
Расширенное правило: ^[^{]{1}((?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?\d)(?=.*?[^a-zA-Z0-9])).{8,}$
Так как я все еще немного потерян с обычнымвыражения, я был бы признателен за решение, включая некоторые объяснения.
Заранее спасибо!
Примечание: я буду использовать это регулярное выражение в javascript.