java - 多个字符类型的单个正则表达式

标签 java regex

我正在寻找一个单个 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/

相关文章:

java - 使用ibatis插入table1(从table2中选择列),不识别参数值

java - Base64 编码对文件名安全吗?

java - 每次我向应用程序添加图像时,它都会崩溃

c++ - gcc 4.8 或更早版本对正则表达式有问题吗?

java - 无法从 Java 程序执行 R 脚本?

java - 查询结束后与数据库的连接未关闭

javascript - 需要一个正则表达式来验证长度为6到64个字符,至少1位数字和3个字母的字符串,不一定要一起使用

regex - htaccess RewriteRule 特殊字符

php - shell 相当于 php preg_match?

javascript - 正则表达式匹配较长的项目