2012-08-02 30 views
0

林使用密碼驗證一個正則表達式: 這個表達式不是由我創造了..正則表達式中的Java密碼驗證

public final Pattern PASSWORD = Pattern.compile("[(?=.*[a-zA-Z])]" 
       + "[(?=.*d)]" + "[(?=.*[^a-zA-Z0-9s])]" + "[.{6s,}]"); 

我嘗試創建 密碼是6個字母長的正則表達式,一個號碼和一個大寫字母

我不知道如何讀的正則表達式... 提出了一些教程學習正則表達式和 確實模式密碼滿足我的條件.. 如果不那麼做什麼樣的變化,我需要讓我的正則表達式

+1

你有沒有使用它呢? – Onheiron 2012-08-02 14:49:01

+0

是的...我google了 – user1557000 2012-08-02 14:49:57

+1

http://www.regular-expressions.info/tutorial.html最好的地方之一正則表達式 – Pshemo 2012-08-02 14:50:53

回答

3

的主要問題是,你有字符類在你的表情[...]。這可能會工作得更好:

"^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9\\s]).{6,}" 

我也改變d\\ds\\s

這意味着:

 
(?=.*[a-zA-Z])  At least one character in [a-zA-Z] 
(?=.*\d)    At least one digit. 
(?=.*[^a-zA-Z0-9\s]) At least one character that's not in [a-zA-Z0-9\s] 
.{6,}     At least 6 characters. 
0

不管你有沒有這是非常,非常奇怪。我不會在這裏詳細討論,因爲Pshemo在評論中指出的教程更適合這個。

爲了您的需求,您可以使用

^(?=.*[A-Z])(?=.*\d).{6}$ 
↑   ↑  ↑ 
│   │  six characters in total 
│   at least one digit 
at least one upper-case letter 
1

試着把這在一條線:

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

我認爲這會幫助你。