2013-07-11 45 views
0

我有一個密碼字段的客戶端驗證正則表達式,它應該允許Unicode支持的所有語言的字母表。帶XRegExp的密碼正則表達式

這是密碼現有的正則表達式:

(?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]) 

我現在用的是XRegExp庫,我試圖修改正則表達式包含\ p {L},但我無法得到它通過對密碼像「Ss!11111」。

下面是我修改的正則表達式:

(?=^.{8,21}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*\\p{L}) 

我知道這個問題似乎是愚蠢的,但我現在有很少的時間來試驗這個正則表達式。如果有人幫助我,並指出我朝着正確的方向,那將會非常有幫助。

回答

1

你需要所有的反斜槓:

(?=^.{8,21}$)((?=.*\\d)|(?=.*\\W))(?![.\\n])(?=.*\\p{L}) 

而且,我不知道該正則表達式的使多大意義。這真的是你想要什麼:(?![\\舉報n。)

(?=^.{8,21}$) # Assert length 8-21 characters (why only 21?) 
(    # Group 1: 
(?=.*\\d)  # Assert at least one digit in the string 
|    # OR 
(?=.*\\W)  # at least one non-alnum character in the string 
)    # End of group 1 
(?![.\\n])  # Assert that the *first* character isn't a dot or newline (??) 
(?=.*\\p{L}) # Assert at least one letter in the string 
+0

不錯catch..also我想''應該是'' – Anirudha

+0

真棒(* [\\舉報n。?!)。 ,我不能相信那是修復,哈哈。是的,這是所需的正則表達式,包括最多21個字符:) – imbecile