2013-07-25 47 views
0

我無法獲得檢查密碼是否至少有一位數字可用的正則表達式。 這個問題已經得到了解答,但如果分裂,所有的答案都停止了。 例如,在此Working Password Validation如果我刪除:密碼正則表達式在分裂時無法正常工作

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]) 

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$ 

爲了檢查一個數字的存在,整個事情停止工作

我是新用正則表達式,這似乎是有道理的,但它沒有,如果可以的話,讓我看看光。

+0

你想做什麼?檢查密碼是否至少有1位數? – Srb1313711

+0

我試圖分開錯誤信息,所以我會有一個大信息而不是多個更具體的信息,即必須有一個數字,然後另一個說,必須有一個小寫字母,等等...... –

回答

0

我不確定你的意思是什麼整件事停止工作

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]) 

所有上述不被強制要求:

  1. 小寫字母必須出現至少一次
  2. 大寫字母必須出現至少一次
  3. 任何@#$%^&+=絕至少出現一次

所以,沒有理由把它們取出來應該破壞任何東西它們是基本上獨立的組件。

有無數種方法可以檢查String是否包含一個數字。你想如何檢查真的取決於你的具體要求。在所呈現的正則表達式中所使用的方法做到這一點通過正向前看:^(?=.*[0-9])

^:始於
*:匹配0或多個非換行符
[0-9]:是這些數字匹配字符類[0,1,2,...,9]
?=是積極向前看,在這種情況下說來匹配當且僅當存在至少一個數量

希望這有幫助。你可以從Oracle's Tutorial on Regular Expressions開始。在您消化完畢後,我確信您可以通過Google找到更多高級資源。

+0

我這也是困難的。我正在使用hibernate 4來驗證。在我的bean中,我有@Pattern(regexp =「^(?=。* [0-9])(?= \\ S + $)。{8,} $」,message =「{must.contain.one.digit }「),即使我輸入一個字符串說」asd43「它錯誤說該字符串必須包含一個數字 –

+0

啊,最後我得到它,結果是字符串大小限制造成浩劫需要8位數字。謝謝你的建議,我絕對需要花一些時間與oracle教程 –

+0

@BaradiBaradari沒有問題。祝你好運。 –