这个代码有什么不对,我不知道有谁可以帮助我:

时间:2016-12-07 08:23:33

标签: javascript if-statement for-loop while-loop do-while

这是一个密码验证Java脚本。我每次运行时都会收到错误(isPasswordValid(' Ggtrt54r $'))函数。 我给了UpperCase,LowerCase,8个字符和特殊字符asPasswordValid输入。但每次我得到"('密码无效需要特殊字符')"错误。我的代码无法通过最后的要求。任何人都可以检查,让我知道我在这里做错了什么。

从这里开始

//主要功能

function isPasswordValid(input){

    if (hasUpperCase(input) && hasLowerCase(input) &&   isLongEnough(input) && hasSpecialCharacter(input)) {
        console.log('Code works fine !!');
    } else if (!hasUpperCase(input)) {
             console.log('Password Invalid Needs Uppercase');
    }else if (!hasLowerCase(input)) {
             console.log('Password Invalid needs lowercase');
    } else if (!isLongEnough(input)) {
        console.log('Password Invalid needs 8 Characters');
    } else if (!hasSpecialCharacter(input)) {
             console.log('Password Invalid needs Special Characters');
    }
}


    function hasUpperCase (input){
      for (var i = 0; i < input.length; i++){
        if(input[i] === input[i].toUpperCase()){
          return true;
        } 
      }
    }

    function hasLowerCase(input){
      for(var i = 0; i < input.length; i++){
        if (input[i] === input[i].toLowerCase()){
          return true;
        }
      }
    }

    function isLongEnough(input){
      for(var i = 0; i < input.length; i++){
        if (input.length === 8){
          return true;
        }
      }
    }

    function hasSpecialCharacter(input){
      var specialCharacters = ['!', '@', '#', '$', '%', '^', '&', '*'];
      for(var i = 0; i < input.length; i++){
        for(var j = 0; j < specialCharacters.length; j++){

        }
        if (input[i] === specialCharacters[j]){
          return true;
        }
      }
    }

    isPasswordValid('Ggtrt54r$');

$ 是这里的空间角色,但每次给我错误都需要特殊字符。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

for(var j = 0; j < specialCharacters.length; j++){

}
if (input[i] === specialCharacters[j]){
  return true;
}

我认为你的意思是:

for(var j = 0; j < specialCharacters.length; j++){
  if (input[i] === specialCharacters[j]){
    return true;
  }
}

答案 1 :(得分:0)

试试这个: 2个错误

  

它匹配8字符以上,所以与

一起使用
 if (input.length >= 8){ 
     

for循环是问题。你在循环之后应用条件。所以   像这样在循环内部改变

for(var i = 0; i < input.length; i++){
    for(var j = 0; j < specialCharacters.length; j++){
    if (input[i] === specialCharacters[j]){
      return true;
    }
      }

function isPasswordValid(input){
if (hasUpperCase(input) && hasLowerCase(input) && isLongEnough(input) && hasSpecialCharacter(input)) {
    console.log('Code works fine !!');
}else if(!hasUpperCase(input)){
         console.log('Password Invalid Needs Uppercase');}
  else if(!hasLowerCase(input)){
         console.log('Password Invalid needs lowercase');}
  else if(!isLongEnough(input)){

    console.log('Password Invalid needs 8 Characters');
  }else if(!hasSpecialCharacter(input)){
         console.log('Password Invalid needs Special Characters');}


}


function hasUpperCase (input){
  for (var i = 0; i < input.length; i++){
    if(input[i] === input[i].toUpperCase()){
      return true;
    } 

  }
}
function hasLowerCase(input){
  for(var i = 0; i < input.length; i++){
    if (input[i] === input[i].toLowerCase()){
      return true;
    }
  }
}
function isLongEnough(input){

  for(var i = 0; i < input.length; i++){
    if (input.length >= 8){
      return true;
    }
  }
}

function hasSpecialCharacter(input){
  var specialCharacters = ['!', '@', '#', '$', '%', '^', '&', '*'];
  for(var i = 0; i < input.length; i++){
    for(var j = 0; j < specialCharacters.length; j++){
    if (input[i] === specialCharacters[j]){
      return true;
    }
      }
  }
}
isPasswordValid('Ggtrt54r$');