单个正则表达式为字符类型的倍数

时间:2012-12-28 23:27:41

标签: java regex

我正在寻找一个单一的java正则表达式,用于声明任意长度的String(实际上是密码)具有:

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

用于匹配,例如:

password.matches("some regex");

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

可以使用多个matches()调用来完成,但正则表达式将被外部化为单个String,因此需要对matches()进行一次调用。

1 个答案:

答案 0 :(得分:4)

理论上,您可以使用以下几种模式:

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

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