Регулярное выражение в Java для шаблона пароля

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

Например :

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]+.*([!#%&'()*+,-:;<=>?@]+.*)))";

Почему бы не использовать отдельные проверки для каждого требования вместо того, чтобы пытаться сделать все в одном регулярном выражении. Цель регулярных выражений по своей сути неясна из-за непрозрачной нотации...

Slawomir Chodnicki 28.05.2019 12:15

Ни один из ваших паролей не содержит специальных символов. Поэтому, конечно, они не выполняют условие «хотя бы один специальный символ».

RealSkeptic 28.05.2019 12:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
78
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

"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 Можете ли вы дать мне регулярное выражение хотя бы для одного алфавита и цифры || Хотя бы один алфавит и специальные символы

Sitansu 28.05.2019 12:40
^(?=.*\pL)(?=.*\d).+$ за первое и ^(?=.*\pL)(?=.*\W).+$ за второе.
anubhava 28.05.2019 12:41

Спасибо, сэр, что поделились хорошим кодом, не могли бы вы объяснить больше о \pL, буду признателен вам, сэр.

RavinderSingh13 21.02.2020 06:41

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

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

Другие вопросы по теме