- 密码不能匹配或包含姓氏
- 密码必须至少包含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不正确,它会更容易、更直接地告诉您。