创建正则表达式数组Javascript

前端之家收集整理的这篇文章主要介绍了创建正则表达式数组Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个功能,将密码与一些常见的愚蠢的密码进行比较,以便用户无法选择其中的一个,但是当我在脚本标签之间放置时,我已经写过的功能导致不能识别 javascript(由Firebug).我假设阵列创建是错误的.
function unacceptable(pwd){
    var unforgivable = [
    /password/gi,/*g matches any occurance of sequence,i checks case insensitive*/
    /12345678/g,/8675309/g,/[a-z]{8,}/gi,/qwerty/gi,/asdfg/gi,/qazwsx/gi,/zxcvb/gi,/letmein/gi,/trustno1/gi,/omnicloud/gi,/monkey/gi];
    for (var i=0; i<unforgivable.length; i++)
        if(pwd.match(unforgivable[i])) return true;
    return false;
}
您不需要循环来测试每个单词,因为您可以将它们全部放入一个正则表达式(用|字符分隔),并让正则表达式引擎一次查找任何一个.你可以这样做:
function unacceptable(pwd){
    var unforgivable = [
        "password","12345678","8675309","[a-z]{8,}","qwerty","asdfg","qazwsx","zxcvb","letmein","trustno1","omnicloud","monkey"
    ];
    var re = new RegExp(unforgivable.join("|"),"i");
    return(pwd.match(re) != null);
}

工作演示:http://jsfiddle.net/jfriend00/cyVbC/3/

附:你不必把所有的词都放到一个数组中.您可以预先声明整个正则表达式,但是我认为将它们放在数组中,这样可以更容易地维护可读的代码.

也可能是这样的:

var unforgivable = /password|12345678|8675309|[a-z]{8,}|qwerty|asdfg|qazwsx|zxcvb|letmein|trustno1|omnicloud|monkey/i;

function unacceptable(pwd){
    return(pwd.match(unforgivable) != null);
}

猜你在找的正则表达式相关文章