1

我正在寻找一个用于断言任何长度的字符串(实际上是密码)具有的单个 java 正则表达式:

  • 至少 2 个小写字母
  • 至少 2 个大写字母
  • 至少 2 个数字字符
  • 至少 1 个字符不是字母或数字

用于匹配,例如:

password.matches("some regex");

这里的“重要”部分是字符类型必须不止一种。我发现的其他问题是关于“至少一个”,而不是“至少两个”的字符类型。

它可以通过多个 match() 调用来完成,但正则表达式将被外部化为单个字符串,因此它需要一次调用matches().

4

1 回答 1

4

理论上,您可以按照以下方式使用模式:

(?=.*[A-Z].*[A-Z])(?=.*[a-z].*[a-z])(?=.*\\d.*\\d)(?=.*[^A-Za-z\\d]).*

但是,对于实际用途,我宁愿坚持正确的编程,而不是依赖像这样的正则表达式。

于 2012-12-28T23:37:57.100 回答