2

这里推荐新的。

这里我有 2 个表达式我想获得最小长度,如果变量在标准 [0-9] 标记内至少有 2 个数字并且至少有 2 个特殊字符。

这是我用于测试的代码。

var noOfNumerics = /[0-9]/g; 
var noOfSplChats = /[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g; 

这是进行实际测试的代码。我查看了教程,据我所知,我看到了具有最小值和最大值的要求,但我真的不想要最大值,但如果那不可能,我可以接受。

var numericsTest=noOfNumerics.test(Password);
var splCharTest=noOfSplChats.test(Password);

这是一个输入的示例,它将被处理为错误的。

Password = 'test#1';

基本上就是这样。只需添加至少 2 个数字和特殊字符的长度。我将如何将该要求添加到我的脚本中?

4

3 回答 3

2

这样做的好处是能够调整您将来需要的字符数。

function isValidPassword (p) {
    var numDigits = p.match(/\d/g).length;
    var numSpecial = p.match(/[~\!@#\$%\^&*_\-\+=`\|\\(\)\{\}\[\]:;"'<>,\.\?\/]/g).length;
    return numDigits >= 2 && numSpecial >= 2;
}

如果您需要搜索非常长的字符串,您可以使用RegExp.exec循环并在获得计数后立即退出

于 2012-10-01T18:22:16.253 回答
2

你可以这样做

var noOfNumerics = /.*\d.*\d.*/g; 

你可以为 noOfSplChats 做同样的事情

只需\d从上面的正则表达式替换为[~\!@#\$%\^&*_\-\+=``\|\\(\)\{\}\[\]:;"'<>,\.\?\/]

于 2012-10-01T15:57:47.363 回答
2

使用前瞻:

/^(?=.*\d.*\d)(?=.*[!@#$].*[!@#$])/
于 2012-10-01T16:00:09.300 回答