0

我正在尝试验证密码,如果没问题,它只会在数组正则表达式中保留一次。当我在 mozilla 浏览器中运行脚本时,我收到以下错误:'seguridadPass [i]. 测试不是函数”。我还想知道如何删除数组“comprobaciones”,即那些尚未使用的正则表达式。谢谢您的帮助。

代码

脚本

var compMay = /[A-ZÑ]/;
var compMin = /[a-zñ]/;
var compNum = /(?=.*\d)/;
var compCarEsp = /[!@#$%^&*(){}[\]<>¿¡?/|.:;_-]/;
var seguridadPass = []; 
seguridadPass.push(compMin,compMay,compNum,compCarEsp);
comprobaciones = [];

$('#write').keyup(function(){

var pass = $(this).val();
if(pass!=''){
    for(i=0;i<seguridadPass.length;i++){
        if(seguridadPass[i].test(pass)){
            //alert(seguridadPass[i]);
            for(j=0;j<comprobaciones.length;j++){
                if(comprobaciones[j]!=seguridadPass[i]){
                    comprobaciones.push(seguridadPass[i]);
                }
            }
        }
    }
}
else{
    comprobaciones.splice(0,comprobaciones.length);
    //comprobaciones = [];
}
});
4

2 回答 2

3
seguridadPass.push(compMin,compMay,compNum,compCarEsp,8);

8 不是正则表达式。

于 2013-09-24T14:57:16.573 回答
0

您的数组主要包含RegExp对象,但您也在8此处将数字推送到您的数组:

seguridadPass.push(compMin,compMay,compNum,compCarEsp,8);

JavaScript 中的Number类型没有test方法*。删除8它应该可以工作:

seguridadPass.push(compMin,compMay,compNum,compCarEsp);

* 除非您在Number.prototype.

于 2013-09-24T14:57:50.630 回答