我有以下模式来验证密码表单(不理想,我知道,但它用于作业)。
/^(?=[a-zA-Z0-9]{8,})(?=[a-zA-Z]*[0-9][a-zA-Z]*$)[a-zA-Z0-9]+$/
我的想法是,我需要密码长度至少为 8 个字母,并且至少包含一个数字和一个字母。它也不能包含任何特殊字符。
它接受password1
作为密码,但不接受password12
作为密码。我怎样才能解决这个问题?
您的正则表达式很接近,但有一些问题:
该部分的(?=[a-zA-Z]*[0-9][a-zA-Z]*$)
意思是“断言从头到尾正好有一个数字 ( [0-9]
) 存在,$
周围有任意数量的字母 (2× [a-zA-Z]*
)”。
相反,你想要这样的东西:
/^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{8,}$/
这里,(?=[a-zA-Z]*[0-9])
和分别(?=[0-9]*[a-zA-Z])
表示“断言在任意数量的字母之后存在数字”和“断言在任意数量的数字之后存在字母”。
之后,您可以简单地匹配[a-zA-Z0-9]{8,}
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句