2015-06-16 40 views
-1

我正在尋找一個用於驗證密碼的正則表達式。密碼規則是:尋找至少有一個小寫字母,至少一個大寫字母,至少一個數字和長度在6和14之間的密碼的正則表達式

  • 至少一個小寫字母
  • 至少一個大寫字母
  • 至少一個數位
  • 長度和14 6之間

我創建下面的正表達但它不起作用

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,14}$ 

它接受

  • qwerty1
  • QWERTY1

    但不QWERTY

即它滿足僅2條件

  • 至少一個數位
  • 長度與14之間的6
+0

你不工作是什麼意思?如果它給出錯誤..分享錯誤..如果它失敗的情況下..共享示例:) –

+0

您是否使用任何特定的語言來實現這個或只是正則表達式? – npinti

+0

編輯問題@karthikmanchala –

回答

1

可以使用\S而不是.限制空間:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{6,14}$ 
           ^

DEMO

2

我不知道這是可能的,但我敢肯定,如果是,它原來很長的複雜的正則表達式的字符串,這是一個錯誤的設計決策。這將是不可維護的,不明確的和非常容易出錯的。

與此同時,這是很容易做到,理解和維護:

function isValid(password) 
 
{ 
 
    if(password.length < 6 || password.length > 14) 
 
    return false; 
 

 
    var valid = { hasLower: false, hasUpper: false, hasDigit: false }; 
 
    for(var i = 0; i < password.length; i++) { 
 
    var c = password[i]; 
 
    var upperC = c.toUpperCase(); 
 
    valid.hasLower |= c != upperC; 
 
    valid.hasUpper |= c == upperC; 
 
    valid.hasDigit |= c >= '0' && c <= '9'; 
 
    } 
 

 
    return valid.hasLower && valid.hasUpper && valid.hasDigit; 
 
} 
 

 
alert('"123abcDEF" valid = ' + isValid('123abcDEF')); 
 
alert('"123 DEF" valid = ' + isValid('123 DEF'));

+0

你能解釋一下「| =」是什麼意思嗎? @Amit –

+0

它是一個[按位或分配](https://developer.mozilla。組織/ EN-US /文檔/網絡/的JavaScript /參考/運營/ Assignment_Operators#Bitwise_OR_assignment) – Amit

相關問題