2015-10-19 228 views
-1

我嘗試驗證使用以下質量要求密碼驗證的正則表達式

對我的servlet密碼○密碼必須包含一個數字和以下
特殊字符之一:@#$%^ & *( )

說明:1!!1都是有效的密碼

正則表達式的香港專業教育學院一直在努力去工作

?=.*[a-zA-Z])(?=.*\\d)(?=.*[[email protected]#$%&*()_+=|<>?{}\\[\\]~-]) 

,但它並不需要1!!1

+0

嘗試https://regex101.com/r/pB3qE0/1 – ergonaut

回答

0

爲什麼不「簡單「像這樣,

/^((?:\d[[email protected]#$%^&*()])|(?:[[email protected]#$%^&*()]\d))$/ 

[!@#$%^ * &()]特殊字符
\ d一個數字
(?:...)沒有捕獲組
| 「或」 操作 ^(string)開頭 $(字符串)結束

如果只有這些特殊字符一個只有一個號碼應該匹配。

迷你的Javascript演示:

var items = ["!1","1!","123123","123!","[email protected]"] 
 

 
for (var idx in items){ 
 
    var item = items[idx]; 
 
    document.write(item +" => "+ (item.match(/^((?:\d[[email protected]#$%^&*()]){1}|(?:[[email protected]#$%^&*()]\d))$/)||"nomatch")); 
 
    document.write("<br />"); 
 
}

+0

這是匹配'1 2 @ 3' – Toto

+0

現在它應該匹配! ,這是一個小括號錯誤。 :) –