javascript - 创建正则表达式 Javascript 数组

标签 javascript regex arrays passwords

我想创建一个函数,将密码与一些常见的愚蠢密码进行比较,以便用户无法选择其中一个,但是我到目前为止编写的函数,当放在脚本标记之间时,不会导致 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 re.test(pwd);
}

这里的工作演示:http://jsfiddle.net/jfriend00/cyVbC/

附注您不必将所有单词放入数组中。您可以预先声明整个正则表达式,但我认为像这样将它们放入数组中可以使代码更具可读性,更易于维护。

也可能是这样的:

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

function unacceptable(pwd){
    return unforgivable.test(pwd);
}

关于javascript - 创建正则表达式 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8207066/

相关文章:

javascript - 使用 MongoDB 连接池的 NodeJS 一次性脚本 - 如何终止?

javascript - 我如何在 jquery 的帮助下在 codeigniter 中匹配两个电子邮件地址

Java URI 正则表达式花费的时间太长

python - 在最后 2 个维度中旋转 5D 数组

javascript - 获取键值对的嵌套对象数

javascript - 如何在KnockoutJS中获取所选项目的id

javascript - jQuery 验证中的正则表达式 - 需要一个包含 5 位数字和 1 个字母的数字(字母不区分大小写)

ruby - 如何使用 webmock 正则表达式匹配器?

javascript - jQuery:对 $.each 的结果进行排序

javascript - 配置错误 : Missing region in config when i am using amazon ses with Node. js