Регулярное выражение не работает для «по крайней мере одного алфавита, хотя бы одной цифры и хотя бы одного специального символа» и «хотя бы одной цифры и хотя бы одного специального символа»
Например :
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]+.*([!#%&'()*+,-:;<=>?@]+.*)))";
Ни один из ваших паролей не содержит специальных символов. Поэтому, конечно, они не выполняют условие «хотя бы один специальный символ».
Для таких утверждений лучше использовать прогнозные утверждения.
"At least one Alphabets,At least one Digits and At least one Special Characters"
^(?=.*\pL)(?=.*\d)(?=.*\W).+$
\pL
соответствует любой букве Юникода, \d
соответствует любой цифре и \W
любому символу, не являющемуся словом.
at least one Special character and at least Digit
^(?=.*\d)(?=.*\W).+$
Обратите внимание, что при использовании метода matches
нет необходимости использовать якоря.
@aubhava Можете ли вы дать мне регулярное выражение хотя бы для одного алфавита и цифры || Хотя бы один алфавит и специальные символы
^(?=.*\pL)(?=.*\d).+$
за первое и ^(?=.*\pL)(?=.*\W).+$
за второе.
Спасибо, сэр, что поделились хорошим кодом, не могли бы вы объяснить больше о \pL
, буду признателен вам, сэр.
Этот шаблон регулярного выражения будет делать то, что вы хотите - сопоставляться только в том случае, если в данной строке ввода есть по меньшей мере одна буква алфавита, одна цифра и один специальный символ:
^(?=.)[a-zA-Z]+[0-9]+[^\w]+[^\s]+
Почему бы не использовать отдельные проверки для каждого требования вместо того, чтобы пытаться сделать все в одном регулярном выражении. Цель регулярных выражений по своей сути неясна из-за непрозрачной нотации...