Javascript 在JS中如何区分特殊字符和验证过程

Javascript 在JS中如何区分特殊字符和验证过程,javascript,validation,Javascript,Validation,我正在用JS编写一个密码验证器(非常基本,这只是一个练习),当我尝试验证大写或小写时,我会得到一个“有效密码”的答案,即使没有一个或另一个,只要其中有一个特殊字符。我知道为什么会发生这种情况,但我想弄清楚的是如何在验证小写或大写时排除特殊字符。 代码如下: 函数验证密码(输入){ if(大写(输入)和小写(输入)足够长(输入)和特殊字符(输入)){ log('密码有效'); }如果(!hassuppercase(输入)){ log('密码至少需要一个大写字母'); }如果(!hasLowerc

我正在用JS编写一个密码验证器(非常基本,这只是一个练习),当我尝试验证大写或小写时,我会得到一个“有效密码”的答案,即使没有一个或另一个,只要其中有一个特殊字符。我知道为什么会发生这种情况,但我想弄清楚的是如何在验证小写或大写时排除特殊字符。 代码如下:

函数验证密码(输入){
if(大写(输入)和小写(输入)足够长(输入)和特殊字符(输入)){
log('密码有效');
}如果(!hassuppercase(输入)){
log('密码至少需要一个大写字母');
}如果(!hasLowercase(输入)){
log('密码至少需要一个小写字母');
}如果(!IsLong足够长(输入)){
log('密码至少需要8个字符长');
}如果(!hasSpecialCharacters(输入)){
log('密码至少需要一个特殊字符');
}
}
函数大写(输入){
对于(变量i=0;i=8){
返回true;
}
}
函数有特殊字符(输入){
变量specialCharacters=[“/”、“*”、“-”、“+”、“\”、“@”、“%”、“&”、“、”、“(“、”)、“$”、“^”、“\\”、“\\”、“、”、“;”、“:”];
对于(变量i=0;i}
如下所述更改大小写函数

函数有小写字母(str){
返回(/[a-z]/.test(str));
}
函数hassuppercase(str){
返回(/[A-Z]/.test(str));

}
如下所述更改大小写函数

函数有小写字母(str){
返回(/[a-z]/.test(str));
}
函数hassuppercase(str){
返回(/[A-Z]/.test(str));

}
密码是有效的,因为hashuppercase和hashlowercase返回true,例如:“@”.toUpperCase()。 您可以将“specialCharacters”移出并更改函数

var specialCharacters = ["/", "*", "-", "+", "_", "@", "%", "&", "<", ">", "!", "(", ")", "$", "^", "\\", "#", ".", ",", ";", ":"];

function hasUppercase(input) {
    for (var i = 0; i < input.length; i++) {
        if (specialCharacters.indexOf(input[i]) == -1 && input[i] === input[i].toUpperCase()) {
            return true;
        }
    }
}

function hasLowercase(input) {
    for (var i = 0; i < input.length; i++) {
        if (specialCharacters.indexOf(input[i]) == -1 && input[i] === input[i].toLowerCase()) {
            return true;
        }
    }
}
var specialCharacters=[“/”、“*”、“-”、“+”、“\”、“@”、“%”、“&”、“、!”、“(“、”)、“$”、“^”、“\\”、“\”、“、”、“、”、“;”、“:”;
函数大写(输入){
对于(变量i=0;i
密码是有效的,因为hashuppercase和hashlowercase返回true,例如:“@”.toUpperCase()。 您可以将“specialCharacters”移出并更改函数

var specialCharacters = ["/", "*", "-", "+", "_", "@", "%", "&", "<", ">", "!", "(", ")", "$", "^", "\\", "#", ".", ",", ";", ":"];

function hasUppercase(input) {
    for (var i = 0; i < input.length; i++) {
        if (specialCharacters.indexOf(input[i]) == -1 && input[i] === input[i].toUpperCase()) {
            return true;
        }
    }
}

function hasLowercase(input) {
    for (var i = 0; i < input.length; i++) {
        if (specialCharacters.indexOf(input[i]) == -1 && input[i] === input[i].toLowerCase()) {
            return true;
        }
    }
}
var specialCharacters=[“/”、“*”、“-”、“+”、“\”、“@”、“%”、“&”、“、!”、“(“、”)、“$”、“^”、“\\”、“\”、“、”、“、”、“;”、“:”;
函数大写(输入){
对于(变量i=0;i
如上@SergioEscudero所述,使用正则表达式可以简化任务。这是您的代码的工作版本

function ValidatePassword(input){
    if(isLongEnough(input) && hasUppercase(input) && hasLowercase(input) && hasSpecialCharacters(input)){
        console.log('The password is valid.');
    }else if(!hasUppercase(input)){
        console.log('The password needs at least one capital letter.');
    }else if(!hasLowercase(input)){
        console.log('The password needs at least one lowercase letter.');
    }else if(!isLongEnough(input)){
        console.log('The password needs to be at least 8 characters long.');
    }else if(!hasSpecialCharacters(input)){
        console.log('The password needs at least one special character.');
    }
}

function hasUppercase(input){
    for(var i = 0; i < input.length; i++){
        if(input[i].match(/^[A-Z]*$/)){
            return true;
        }
    }
}

function hasLowercase(input){
    for (var i = 0; i < input.length; i++){
        if(input[i].match(/^[a-z]*$/)){
            return true;
        }
    }
}

function isLongEnough(input){
    if(input.length >= 8){
        return true;
    }
}

function hasSpecialCharacters(input){
for(var i = 0; i < input.length; i++){
    if(input`enter code here`[i].match(/[0-9-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/i)){
        return true;
     }

  }
}
ValidatePassword('sdgdgdgdgdgdD{')
ValidatePassword('sdgdgdgdgdgdD')
ValidatePassword('DDDDDDDDDDDDDDDD#{')
ValidatePassword('sdgdgdgdgdgd{')
//The password is valid.
//The password needs at least one special character.
//The password needs at least one lowercase letter.
///The password needs at least one capital letter.
函数验证密码(输入){
if(足够长(输入)&&has大写(输入)&&has小写(输入)&&has特殊字符(输入)){
log('密码有效');
}如果(!hassuppercase(输入)){
log('密码至少需要一个大写字母');
}如果(!hasLowercase(输入)){
log('密码至少需要一个小写字母');
}如果(!IsLong足够长(输入)){
log('密码至少需要8个字符长');
}如果(!hasSpecialCharacters(输入)){
log('密码至少需要一个特殊字符');
}
}
函数大写(输入){
对于(变量i=0;i=8){
返回true;
}
}
函数有特殊字符(输入){
对于(变量i=0;i
正如上面@SergioEscudero所提到的,使用regex可以简化任务。下面是代码的工作版本

function ValidatePassword(input){
    if(isLongEnough(input) && hasUppercase(input) && hasLowercase(input) && hasSpecialCharacters(input)){
        console.log('The password is valid.');
    }else if(!hasUppercase(input)){
        console.log('The password needs at least one capital letter.');
    }else if(!hasLowercase(input)){
        console.log('The password needs at least one lowercase letter.');
    }else if(!isLongEnough(input)){
        console.log('The password needs to be at least 8 characters long.');
    }else if(!hasSpecialCharacters(input)){
        console.log('The password needs at least one special character.');
    }
}

function hasUppercase(input){
    for(var i = 0; i < input.length; i++){
        if(input[i].match(/^[A-Z]*$/)){
            return true;
        }
    }
}

function hasLowercase(input){
    for (var i = 0; i < input.length; i++){
        if(input[i].match(/^[a-z]*$/)){
            return true;
        }
    }
}

function isLongEnough(input){
    if(input.length >= 8){
        return true;
    }
}

function hasSpecialCharacters(input){
for(var i = 0; i < input.length; i++){
    if(input`enter code here`[i].match(/[0-9-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/i)){
        return true;
     }

  }
}
ValidatePassword('sdgdgdgdgdgdD{')
ValidatePassword('sdgdgdgdgdgdD')
ValidatePassword('DDDDDDDDDDDDDDDD#{')
ValidatePassword('sdgdgdgdgdgd{')
//The password is valid.
//The password needs at least one special character.
//The password needs at least one lowercase letter.
///The password needs at least one capital letter.
函数验证密码(输入){
if(足够长(输入)&&has大写(输入)&&has小写(输入)&&has特殊字符(输入)){
log('密码有效');
}如果(!hassuppercase(输入)){
log('密码至少需要一个大写字母');
}如果(!hasLowercase(输入)){
console.log('密码至少需要一个小写字母')