我有以下模式来验证密码表格(不太理想,我知道,但这是为了作业)。
/^(?=[a-zA-Z0-9]{8,})(?=[a-zA-Z]*[0-9][a-zA-Z]*$)[a-zA-Z0-9]+$/
我的想法是,我需要密码长度至少为8个字母,并且至少包含一个数字和一个字母。它也不能包含任何特殊字符。
它接受password1
作为密码,但不接受password12
作为密码。我该如何解决这个问题?
答案 0 :(得分:0)
你的正则表达式很接近但有一些问题:
部分(?=[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,}
。