我正在寻找一个单个 java 正则表达式 来断言任何长度的字符串(实际上是密码)具有:
- 至少2个小写字母
- 至少2个大写字母
- 至少 2 个数字字符
- 至少有 1 个字符不是字母或数字
用于匹配,例如:
password.matches("some regex");
这里“重要”的部分是必须有多个的字符类型。我发现的其他问题谈论的是“至少一个”,而不是“至少两个”字符类型。
它可以通过多次 matches() 调用来完成,但正则表达式将被外部化为单个字符串,因此它需要一次调用 matches()
。
最佳答案
理论上,您可以按照以下方式使用模式:
(?=.*[A-Z].*[A-Z])(?=.*[a-z].*[a-z])(?=.*\\d.*\\d)(? =.*[^A-Za-z\\d]).*
但是,对于实际用途,我宁愿坚持正确的编程,而不是依赖像这样的正则表达式。
关于java - 多个字符类型的单个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077074/