我想在Javascript中为7个标志进行密码检查,密码必须包含2个数字。我有这个代码,但这只会测试1个数字。如何测试2个数字......
var re = /(?=.*\d)(?=.*[a-z]).{7,}/;
if (!re.test(password.value)) {
alert('Passwords must contain at least one number, one lowercase and one uppercase letter. Please try again');
return false;
}
答案 0 :(得分:2)
要强制至少2个(不一定是彼此相邻)数字,您可以这样做:
/^(?=.*\d.*\d)(?=.*[a-z]).{7,}$/
如果你想要2个(不一定是彼此相邻)数字,它会变得稍微复杂一些:
/^(?=[^\d]*\d[^\d]*\d[^\d]*$)(?=.*[a-z]).{7,}$/
DEMO:http://regex101.com/r/iB0tE6
注意:我还为您锚定了正则表达式。否则,包含7个拟合字符序列的较长密码仍将匹配。
答案 1 :(得分:-1)
\d
仅检查单个数字。您可以通过添加数字检查的第二个实例来专门检查两个数字:\d\d
。或者,如果您要检查至少2个号码,则应使用\d\d+
,这将检查1位数,然后检查1位或更多位数。