用于验证包含数字的密码的正则表达式拒绝具有多个数字的字符串

时间:2018-04-05 20:54:24

标签: regex validation

我有以下模式来验证密码表格(不太理想,我知道,但这是为了作业)。

/^(?=[a-zA-Z0-9]{8,})(?=[a-zA-Z]*[0-9][a-zA-Z]*$)[a-zA-Z0-9]+$/

我的想法是,我需要密码长度至少为8个字母,并且至少包含一个数字和一个字母。它也不能包含任何特殊字符。

它接受password1作为密码,但不接受password12作为密码。我该如何解决这个问题?

1 个答案:

答案 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,}