我需要使用 Java 验证密码字符串。这是验证的要求:
- 至少 1 个号码
- 至少 1 个字母字符
- 集合中至少 1 个字符 !@#$%^&*()_+=-~`][{};':"/.>?,<
- 8 到 20 个字符
在扭来扭去把我的头撞到墙上几次之后,我想出了这个正则表达式
if (!password.matches("^(?=.+[0-9])(?=.+[a-zA-Z])(?=.+[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E])[0-9a-zA-Z\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]{8,20}$")) {
}
这看起来太可怕和疯狂了。有没有更好的方法来完成这个使命?