регулярное выражение для типичного имени пользователя и пароля - PullRequest
0 голосов
/ 06 февраля 2019

Используя RegEx в Java, я пытаюсь сгенерировать имя пользователя и пароль:

алфавит, позволяет: az, AZ, 0-9 и @ # $%!

username,хотя бы одна строчная буква, хотя бы одна прописная буква, алфавит, пароль 5-13 ч

, хотя бы одна строчная буква, хотя бы одна прописная буква, хотя бы одна цифра, алфавит 5-13 ч

но каждый раз, когда я запускаю, мое тестовое имя пользователя: aA0 @!и проверить пароль: aA0 @!продолжайте показывать мое сообщение Toast, которое указывает, что учетные данные недействительны.

Pattern uPattern = Pattern.compile("^((?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9@#$%!]).{5,13})$");
Pattern pPattern = Pattern.compile("^((?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%!])([a-zA-Z0-9@#$%!]).{5,13})$");

if(!uPattern.matcher(mUserName.getText().toString()).matches()
 || !pPattern.matcher(mPassWord.getText().toString()).matches()){
 /* and if the patterns don't match, display a Toast message */
}

1 Ответ

0 голосов
/ 06 февраля 2019

([a-zA-Z0-9@#$%!]).{5,13} , потребляющая часть вашего регулярного выражения, означает, что допустимая длина строки составляет от 6 до 14. aA0@! - это всего 5 символов.

Существует два выхода в зависимости отпри следующих условиях:

  • Если разрешенные символы включают только буквы, цифры и @#$%!, замените ([a-zA-Z0-9@#$%!]).{5,13} на [a-zA-Z0-9@#$%!]{5,13}
  • Если вы хотите разрешить любые символы кроме строкиразделите символы, замените ([a-zA-Z0-9@#$%!]).{5,13} на .{5,13} (то есть удалите группу захвата).

См. Lookahead Пример: простая проверка пароля для получения дополнительных советов, как упростить такиерегулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...