2014-05-17 179 views
0
  • 密碼必須不匹配或包含姓氏。
  • 密碼必須包含至少1個特殊字符。
  • 密碼必須包含至少1個數字字符。
  • 密碼必須含有至少2個字母字符。
  • 密碼必須包含至少1個大寫字母。
  • 密碼必須不匹配或包含用戶ID。
  • 密碼不能匹配或包含名字。
  • 密碼不得包含以下字符:!
  • 密碼不得超過25個字符。
  • 密碼長度必須至少爲8個字符。
  • 密碼必須包含至少1個小寫字母。

這些符號應該包含在!"#$%&'()*+-./:;<=>[email protected][\]^_ {|}〜`正則表達式「符號不工作

,但我試圖把「它是給錯誤這個特殊字符[編譯時錯誤]

private static final String PASSWORD_PATTERN = "((?=.*[a-z])(?=.*\\d)(?=.*[A-Z])(?=.*["@#$%!%^&*()_+=?/[],.<>|~`'-]).{8,32})"; 

燦一個hep,預先感謝

+0

您是否試過轉義報價? – awksp

+0

不,我不知道如何在正則表達式中逃避 –

+0

請參閱@ dystroy的回答 – awksp

回答

3

當然,你不能簡單地把一個引號放在一個字符串文字中,這會結束字符串,它和正則表達式無關,不管你以後用t他串。

簡單地逃避它:用\"


關於意見的新問題附錄更換":如果你把[]字符類(即[]之間),那麼你必須逃脫他們爲正則表達式。正如你在字符串文字中那樣做的那樣,這使得雙重逃脫,因爲你必須逃脫\。而且你還必須在字符類中逃脫-

因此改變

["@#$%!%^&*+=?/[],.<>|~`'-:/<>] 

["@#$%!%^&*+=?/\\[\\],.<>|~`'\\-:/<>] 
+0

問題已解決,謝謝:) –

+0

omg 線程「主線程」中的異常java.util.regex.PatternSyntaxException:索引附近的未封閉字符類(?=。* [az])(?=。* \ d)(?=。* [AZ])(?=。* [「@#$%!%^&* + =?/ [ ],<> |〜'' - :/ <>])。{8,32}) ^ 這是說在末尾沒有括起來:( –

+0

請參閱編輯這個問題 –

0

我建議使用https://www.debuggex.com/當你試圖用正則表達式的工作。這很容易,直接告訴你,如果你的正則表達式不正確。