RegEx для как минимум прописных, строчных букв, цифр и специальных символов - PullRequest
1 голос
/ 21 мая 2019

Я пишу Android-регулярный экспресс для проверки пароля, который содержит регулярное выражение, которое я использовал

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).{8,16}$

но мой класс Matcher всегда возвращает false

     Matcher matcher;

        Pattern pattern = Pattern.compile(context.getString(R.string.password_validation_value));

matcher = pattern.matcher(password); // always returns false

Как мне решить эту проблему?

1 Ответ

1 голос
/ 21 мая 2019

Хорошо, вот объяснение

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\p{P}).{6,16}$

Объяснено

 ^                     # Beginning of string
 (?= .* \d )           # Assert, string contains a digit
 (?= .* [a-z] )        # Assert, string contains a lower case letter
 (?= .* [A-Z] )        # Assert, string contains a upper case letter
 (?= .* \p{P} )        # Assert, string contains a punctuation character
 .{6,16}               # Consume 6 to 16 characters
 $                     # End of string
...