我正在尝试检查密码是否包含至少一个小写字母,一个大写字母,一个数字和一个特殊字符.
我正在尝试这个:
if(!password.matches("(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])")){
username = "Error";
}
Run Code Online (Sandbox Code Playgroud)
但是给我一个错误说:无效的转义序列.
有人可以帮我解决问题并确认这是正确的模式吗?
谢谢,惠特\\ d不做错误,但它与像保罗%88这样的字符串不匹配为什么?
dle*_*lev 38
Java会将\字符串内部视为启动转义序列.确保你\\改为使用(这样你就可以得到\字符串中的实际字符),你应该没问题.
快速更新:正如Etienne所指出的,如果你真的想要一个\RegEx本身,你需要使用\\\\,因为这将\\在字符串中产生,这将\在RegEx中产生.
新问题更新:您提到您的RegEx不起作用,我很确定这是因为它错了.如果您只想确保每种类型的字符类都存在,您可能只想为每个类创建一个RegEx,然后检查每个类的密码.密码几乎可以保证很短(你实际上可以自己控制密码),所以性能指数应该是最小的.