使用正则表达式对7个符号和2个数字进行Javascript测试

时间:2014-02-01 19:30:18

标签: javascript

我想在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;
}

2 个答案:

答案 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位或更多位数。