2013-08-21 64 views
0

我想對密碼執行JavaScript驗證。驗證密碼是至少6個字符

它必須滿足以下條件:

  • 至少6個字符長
  • 至少1個大寫字母
  • 至少1小寫字母至少
  • 至少1數
  • 1個標點符號
+3

粘貼您的代碼,然後我們指出錯誤 – guisantogui

+0

如果您想獲得更多答案,請添加「javascript」標記。 – kol

+6

指出使用JavaScript驗證密碼是非常重要的,這意味着代碼將在瀏覽器中運行,而不是在服務器上運行。這是一個糟糕的安全模式 - 客戶端安全 - 可以輕鬆繞過。將它作爲可用性功能或嘗試最小化服務器負載(通過在客戶端上發生錯誤)是可以的,但如果您的服務器沒有獨立驗證密碼,則不會安全地編寫應用程序,無論客戶端結果。 – atk

回答

0

驗證可以不通過e。使用一個單一的正則表達式:

var pw = "letMe1n!"; // Read this from an <input> field 

// Validation:  
if (/^(?=.*[.,?!])(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{6,}/.test(pw)) { 
    // The password is valid! 
} 

該組標點字符,[.,?!]如果需要,可以延長。

4

這裏有一個辦法做到這一點使用正則表達式的數組:

/** 
    * Returns true if pw is a valid password. 
    */ 

function isValid(pw) { 

    if (! pw) { 
     return false; 
    } 

    var rgx = [ 
     /.{6,}/, 
     /[A-Z]/, 
     /[a-z]/, 
     /[0-9]/, 
     /[@#$&*^%!+=\/\\[\]|?.,<>)(;:'"~`]/ 
    ]; 

    for (var i = 0; i < rgx.length; i++) { 
     if (rgx[i].test(pw) === false) { 
      return false; 
     } 
    } 
    return true;   
} 

Working example

你可以使通過將正則表達式數組作爲參數更靈活。

More reading about regex.test() here


這裏是更具可讀性,學術版:

function isValid(s) { 
    // check for null or too short 
    if (!s || s.length < 6) { 
     return false; 
    } 
    // check for a number 
    if (/[0-9]/.test(s) === false) { 
     return false; 
    } 
    // check for a capital letter 
    if (/[A-Z]/.test(s) === false) { 
     return false; 
    } 
    // check for a lowercase letter 
    if (/[a-z]/.test(s) === false) { 
     return false; 
    }  
    // check for punctuation mark 
    if (/[@#$&*^%!+=\/\\[\]|?.,<>)(;:'"~`]/.test(s) === false) { 
     return false; 
    } 
    // all requirements have been satisfied 
    return true; 
} 

這裏有一個working example

相關問題