我正在寻找验证密码的正则表达式。密码规则是:
我创建了以下正则表达式,但它无效
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,14}$
它正在接受
QWERTY1
但不是qwERTy
即。它只满足了两个条件
答案 0 :(得分:2)
我不确定这是可能的,但我确信如果是这样,并且结果是一个长而复杂的正则表达式字符串,那么这是一个错误的设计决定。它将是不可维护的,不清楚且非常容易出错。
与此同时,这很容易做到,理解和维护:
function isValid(password)
{
if(password.length < 6 || password.length > 14)
return false;
var valid = { hasLower: false, hasUpper: false, hasDigit: false };
for(var i = 0; i < password.length; i++) {
var c = password[i];
var upperC = c.toUpperCase();
valid.hasLower |= c != upperC;
valid.hasUpper |= c == upperC;
valid.hasDigit |= c >= '0' && c <= '9';
}
return valid.hasLower && valid.hasUpper && valid.hasDigit;
}
alert('"123abcDEF" valid = ' + isValid('123abcDEF'));
alert('"123 DEF" valid = ' + isValid('123 DEF'));
答案 1 :(得分:1)