我需要创建一个正则表达式来检查密码是否至少包含1个大写字母,至少2个数字并以$(美元符号)结尾。
我一直在努力弄清楚,但我只能检查是否至少有1个大写字母和一个数字,而不是两个。
这些应该有效:
4hg5Fjkjk $
fh @#Y5fFF5 $
hgH5Hu6 $
这些无效:
45tyghisu $(无大写字母)
5THygfhy $(只有一个数字)
Gh%hF45 $ h(末尾没有美元符号)
这是我到目前为止的内容(请检查至少一个数字,最后一个大写字母和美元符号)
/(?=.*[A-Z])(?=.*\d).*\$/
任何帮助将不胜感激!
ps。我看过SO,找不到与一个以上必需字符有关的任何东西。
答案 0 :(得分:1)
在您的模式中,必须使用(?=(?:[^\d\r\n]*\d){2})
和contrast来重复声明一次数字,而不是一次。
如果您不想在密码中使用空格,则可以使用\S+
来匹配1倍以上的非空格字符。
您可以使用:
^(?=[^A-Z\r\n]*[A-Z])(?=(?:[^\d\r\n]*\d){2})\S+\$$
根据OP给出的答案,字符数应为9-15:
^(?=[^A-Z\r\n]*[A-Z])(?=(?:[^\d\r\n]*\d){2})\S{9,15}\$$
答案 1 :(得分:0)
答案 2 :(得分:0)
感谢所有答案。仔细查看它们,我发现了使用以下正则表达式的一种非常简单的方法。我对其进行了编辑,以允许设置密码的长度,只需将9和15更改为所需的长度即可。
/^(?=.*[A-Z])(?=.*\d.*\d)[^\s]{9,15}\$$/