正则表达"符号不起作用

时间:2014-05-17 07:09:17

标签: java regex

  • 密码不得匹配或包含姓氏。
  • 密码必须至少包含1个特殊字符。
  • 密码必须至少包含1个数字字符。
  • 密码必须包含至少2个字母字符。
  • 密码必须至少包含1个大写字母。
  • 密码不得与用户ID匹配或包含用户ID。
  • 密码不得匹配或包含名字。
  • 密码不得包含以下字符:!
  • 密码不得超过25个字符。
  • 密码长度必须至少为8个字符。
  • 密码必须包含至少1个小写字母。

这些符号应包含在!"#$%&'()*+-./:;<=>?@[\]^_ {|}〜`

但我试图把“这个特殊字符给出错误[编译时错误]

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

一个人可以,提前谢谢

2 个答案:

答案 0 :(得分:3)

当然,你不能简单地在一个字符串文字中加上一个引号来结束字符串。它与正则表达式无关,无论你以后使用字符串做什么都是一样的。

简单地逃避它:用"

替换\"

评论中有关新问题的附录:如果您将[]放入角色类(介于[]之间),那么您必须逃脱他们为正则表达式。当您在字符串文字中执行此操作时,会进行双重转义,因为您必须转义\。而且你还必须在字符类中转义-

所以改变

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

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

答案 1 :(得分:0)

我建议您在尝试使用正则表达式时使用https://www.debuggex.com/。它更容易,并直接告诉您正则表达式是否不正确。