2014-05-17 132 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/当你试图用正则表达式的工作。这很容易,直接告诉你,如果你的正则表达式不正确。