正则表达式检查字符串是否至少有 2 个数字和 1 个大写字母
Regex to check if string has at least 2 numbers and 1 capital letter
我需要创建一个正则表达式来检查密码是否至少包含 1 个大写字母、至少 2 个数字并以 $(美元符号)结尾。
我一直在努力弄明白,但我只能检查是否至少有 1 个大写字母和一个数字,而不是两个。
这些应该是有效的:
4hg5Fjkjk$
fh@#Y5fFF5$
hgH5Hu6$
这些应该是无效的:
45tyghisu$(无大写)
5THygfhy$(只有一个号码)
Gh%hF45$h(末尾没有美元符号)
这是我目前所掌握的(至少检查一个数字、一个大写字母和末尾的美元符号)
/(?=.*[A-Z])(?=.*\d).*$/
任何帮助将不胜感激!
ps。我查看了 SO,但找不到与超过一个必需字符相关的任何内容。
在您的模式中,您必须重复声明一个数字两次而不是一次,例如使用 (?=(?:[^\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}$$
这个 RegEx 很简单,除了 OP 指定的字符外,没有对密码中可能包含的字符做任何其他假设。
^(?=.*?[A-Z])(?=.*?\d.*?\d).*$$
See Demo(点击开启"RUN TESTS")
谢谢大家的回答。通过查看它们,我想出了一个非常简单的方法来使用下面的正则表达式。我对其进行了编辑以允许设置密码的长度,只需将 9 和 15 更改为您想要的长度即可。
/^(?=.*[A-Z])(?=.*\d.*\d)[^\s]{9,15}$$/
我需要创建一个正则表达式来检查密码是否至少包含 1 个大写字母、至少 2 个数字并以 $(美元符号)结尾。
我一直在努力弄明白,但我只能检查是否至少有 1 个大写字母和一个数字,而不是两个。
这些应该是有效的:
4hg5Fjkjk$
fh@#Y5fFF5$
hgH5Hu6$
这些应该是无效的:
45tyghisu$(无大写)
5THygfhy$(只有一个号码)
Gh%hF45$h(末尾没有美元符号)
这是我目前所掌握的(至少检查一个数字、一个大写字母和末尾的美元符号)
/(?=.*[A-Z])(?=.*\d).*$/
任何帮助将不胜感激!
ps。我查看了 SO,但找不到与超过一个必需字符相关的任何内容。
在您的模式中,您必须重复声明一个数字两次而不是一次,例如使用 (?=(?:[^\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}$$
这个 RegEx 很简单,除了 OP 指定的字符外,没有对密码中可能包含的字符做任何其他假设。
^(?=.*?[A-Z])(?=.*?\d.*?\d).*$$
See Demo(点击开启"RUN TESTS")
谢谢大家的回答。通过查看它们,我想出了一个非常简单的方法来使用下面的正则表达式。我对其进行了编辑以允许设置密码的长度,只需将 9 和 15 更改为您想要的长度即可。
/^(?=.*[A-Z])(?=.*\d.*\d)[^\s]{9,15}$$/