Регулярно проверяйте, содержит ли строка хотя бы 2 цифры и 1 заглавную букву - PullRequest
1 голос
/ 20 сентября 2019

Мне нужно создать регулярное выражение, чтобы проверить, имеет ли пароль хотя бы 1 заглавную букву, хотя бы 2 цифры и заканчивается ли $ (знак доллара).

Я пытался выяснитьэто, но я могу только проверить, есть ли по крайней мере 1 верхний регистр и одно число, а не два.

Они должны быть действительными:

4hg5Fjkjk $

fh @ # Y5fFF5 $

hgH5Hu6 $


Они не должны быть действительными:

45tyghisu $ (без заглавной буквы)

5THygfhy $ (только одно число)

Gh% hF45 $ h (без знака доллара в конце)


Вот что у меня есть (проверяет, по крайней мере, один номер, одну заглавную букву и знак доллара в конце)

/(?=.*[A-Z])(?=.*\d).*\$/ Любая помощь будет принята с благодарностью!

пс.Я посмотрел на SO и не могу найти ничего, касающегося более чем одного обязательного символа.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

В вашем шаблоне вы должны повторить утверждение цифры дважды вместо одного раза, используя, например, (?=(?:\D*\d){2})

Если вы не хотите разрешать пробелы в пароле, вы можете использовать \S+ длясовпадать 1+ раз с непробельным символом.

Вы можете использовать:

^(?=[^A-Z]*[A-Z])(?=(?:\D*\d){2})\S+\$$

Regex demo

0 голосов
/ 20 сентября 2019

Этот RegEx прост и не делает никаких других предположений о том, какие символы могут быть в пароле, кроме того, что было указано в OP.

^(?=.*?[A-Z])(?=.*?\d.*?\d).*\$$

См. Демонстрацию (Нажмите ON "ПУТЕШЕСТВИЯ ")

...