正则表达式"符号不起作用


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

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

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

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

可以一个hep,提前感谢

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

简单地逃离它:用" 替换"


注释中关于新问题的补充:如果将[]放在一个字符类中(位于[]之间(,则必须为正则表达式转义它们。当您在字符串文字中执行此操作时,会产生双重转义,因为您必须转义。并且还必须转义字符类中的-

所以改变

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

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

我建议使用https://www.debuggex.com/当您尝试使用正则表达式时。如果您的regex不正确,它会更容易、更直接地告诉您。

最新更新