为密码强度分解JavaScript正则表达式

时间:2014-01-14 21:25:20

标签: javascript regex

我有一个正则表达式用于检查我的密码有效性(我在互联网上找到它)。它检查6个字符,至少一个上部,至少一个下部,至少一个数字和符号的最小长度。我想爆炸这个正则表达式并将其放在一个数组中,以便我可以检查密码强度。

var regexp = /^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!]).{6,})$/

然后我会有这样的事情:

if(regexparray[0].test(passwordval)){
    strenght++;
} else if(regexparray[1].test(passwordval)){
    strenght++;
} 
//etc....

编辑:将这个正则表达式划分为其部分的正确方法是什么?

1 个答案:

答案 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());之类的操作对输入进行了一些清理。另外,您实际上不需要使用字符串元字符的开头和结尾来限制测试(^$)。