我有一个正则表达式用于检查我的密码有效性(我在互联网上找到它)。它检查6个字符,至少一个上部,至少一个下部,至少一个数字和符号的最小长度。我想爆炸这个正则表达式并将其放在一个数组中,以便我可以检查密码强度。
var regexp = /^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!]).{6,})$/
然后我会有这样的事情:
if(regexparray[0].test(passwordval)){
strenght++;
} else if(regexparray[1].test(passwordval)){
strenght++;
}
//etc....
编辑:将这个正则表达式划分为其部分的正确方法是什么?
答案 0 :(得分:1)
扩展Jorge Campos的评论,你可以这样做:
var passwordval = 'fdSfdDSF';
var tests = [
'(?=.*\d)',
'(?=.*[a-z])',
'(?=.*[A-Z])',
'(?=.*[@#$%!])',
'.{6,}'
],
strength = 0;
for (var i=0, l=tests.length; i<l; i++) {
var re = new RegExp(tests[i]);
if (re.test(passwordval)) {
strength += 1;
}
}
console.log(strength);
// 4
如果您从表单字段中获取用户输入,则可能已经通过var passwordval = $.trim($('#password').val());
之类的操作对输入进行了一些清理。另外,您实际上不需要使用字符串元字符的开头和结尾来限制测试(^
和$
)。