Регулярное выражение в Java для шаблона пароля - PullRequest
1 голос
/ 28 мая 2019

Регулярное выражение не работает для "По крайней мере, одного алфавита, По крайней мере, одной цифры и По крайней мере, одного специального символа" и "По крайней мере, одной цифры и По крайней мере, одного специального символа"

Например:

String passwordpattern="A9009"; //Not working for  pattern3

Примечание: он должен проверять по крайней мере один алфавит, цифры и специальные символы

и

String passwordpattern="A3566523"; //Not working for  pattern4

Примечание. Должен проверяться хотя бы один специальный символ и хотя бы цифра

    //Alphabets, Digits and Special Characters
            String pattern3 = "[^\\\\w\\\\d]*(([0-9]+.*[A-Za-z]+.*[!#%&'()*+,-:;<=>?@}{]+.*)|[A-Za-z]+.*[0-9]+.*[!#%&'()*+,-:;<=>?@}{]+.*|[!#%&'()*+,-:;<=>?@}{]+.*[A-Za-z]+.*[0-9]+.*|[!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*[A-Za-z]+.*|[A-Za-z]+.*[!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*|[0-9]+.*[!#%&'()*+,-:;<=>?@}{]+.*[A-Za-z]+.*)";

   //Digits and Special Characters
  String pattern4 = "([^\\\\w\\\\d]*(([!#%&'()*+,-:;<=>?@}{]+.*[0-9]+.*)|[0-9]+.*([!#%&'()*+,-:;<=>?@]+.*)))";

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

Для утверждений такого типа лучше использовать косвенные утверждения .

"хотя бы один алфавит, хотя бы одну цифру и хотя бы один специальный символ"

^(?=.*\pL)(?=.*\d)(?=.*\W).+$

\pL соответствует любой букве Юникода, \d соответствует любой цифре и \W любому символу, не являющемуся словом.

хотя бы один Специальный символ и внаименьшая цифра

^(?=.*\d)(?=.*\W).+$

Обратите внимание, что при использовании метода matches нет необходимости использовать якоря.

0 голосов
/ 28 мая 2019

Этот шаблон регулярного выражения будет делать то, что вы хотите - совпадать, только если есть , по крайней мере, одна буквенная буква, одна цифра и один специальный символ в данной строке ввода:

^(?=.)[a-zA-Z]+[0-9]+[^\w]+[^\s]+

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