2016-12-07 85 views
-2

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

//主要功能

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$'); 

$

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

回答

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; 
    } 
} 
+0

邑感谢的人。我应该更仔细地了解所有这些错误......它会让我的时间消耗很多:) –

0

试试这个:2错误

其匹配上述8焦炭如此用用

if (input.length >= 8){ 

而且for循环的问题。你是用内循环loop.So 变更后适用的条件是这样

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$');

+0

感谢您的回复和解决方案 –

相关问题