2016-12-07 105 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

感謝您的回覆和解決方案 –

相關問題