Я пытаюсь создать регулярное выражение для соответствия шаблону (для паролей), где строка должна быть от 8 до 30 символов, должна иметь не менее 2 символов цифр, не менее 2 букв (без учета регистра), не менее 1 специального символа и пробелов.Regex, чтобы соответствовать как минимум 2 цифрам, 2 буквам в любом порядке в строке
У меня есть пробелы и специальные символы, соответствующие работе, но меня бросают на 2 цифры и 2 буквы, потому что они не обязательно должны быть последовательными.
i.e должно соответствовать a1b2c$
или ab12$
или 1aab2c$
.
Что-то вроде этого для букв?
(?=.*[a-zA-Z].*[a-zA-Z]) // Not sure.
Эта строка ниже работает, но только если 2 буквы подряд и 2 номера consecutive..it терпит неудачу, если буквы, цифры, специальные символы переплетены.
(?=^.{8,30}$)((?=.*\\d)(?=.*[A-Za-z]{2})(?=.*[0-9]{2})(?=.*[[email protected]#$%^&*?]{1})(?!.*[\\s]))^.*
Вы абсолютно уверены, что вам нужно регулярное выражение для этого? – Scorpil
Я бы возражал против регулярного выражения и просто имел индивидуальные проверки для каждого из них с операторами if и некоторой функцией string.contains(). gparyani дал решение, которое выглядит намного лучше, чем регулярное выражение. – user1751547
Похоже, мне нужно регулярное выражение, так как это часть конфигурации Liferay. – user2166893