Chr*_*ris 25 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;
}
Run Code Online (Sandbox Code Playgroud)
jfr*_*d00 46
您不需要循环来测试每个单词,因为您可以将它们全部放入一个正则表达式(由|
字符分隔)中,并让正则表达式引擎一次查找任何单词.你可以这样做:
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);
}
Run Code Online (Sandbox Code Playgroud)
这里的工作演示:http://jsfiddle.net/jfriend00/cyVbC/
PS您不必将所有单词放入数组中.您可以预先声明整个正则表达式,但我认为将它们放在这样的数组中,以便更容易维护更易读的代码.
它也可能是这样的:
var unforgivable = /password|12345678|8675309|[a-z]{8,}|qwerty|asdfg|qazwsx|zxcvb|letmein|trustno1|omnicloud|monkey/i;
function unacceptable(pwd){
return unforgivable.test(pwd);
}
Run Code Online (Sandbox Code Playgroud)
Ren*_*ama 12
我喜欢使用Array.some
,一旦返回值为真,它将停止迭代数组:
function unacceptable(pwd){
return [
/password/gi,
/12345678/g,
/8675309/g,
/[a-z]{8,}/gi,
/qwerty/gi,
/asdfg/gi,
/qazwsx/gi,
/zxcvb/gi,
/letmein/gi,
/trustno1/gi,
/omnicloud/gi,
/monkey/gi
].some(function(regexp){
return regexp.test(pwd);
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26513 次 |
最近记录: |