试图在正则表达式中获取数字和特殊字符的最小长度

时间:2012-10-01 15:52:00

标签: javascript regex

这里推荐新的。

这里有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个数字和特殊字符的长度。我如何将该要求添加到我的脚本中?

3 个答案:

答案 0 :(得分:2)

你可以这样做

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

你可以为noOfSplChats

做同样的事情

只需使用\d

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

答案 1 :(得分:2)

使用前瞻:

/^(?=.*\d.*\d)(?=.*[!@#$].*[!@#$])/

答案 2 :(得分:2)

这样做的好处是可以调整将来需要的字符数。

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

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