【问题标题】:Using regex to check if a string has at least two numbers使用正则表达式检查字符串是否至少有两个数字
【发布时间】:2014-10-23 06:46:15
【问题描述】:

在对堆栈溢出进行挖掘之后,我发现了一些代码可以检查字符串是否为字母数字且是否超过 8 个字符。它工作得很好。现在,如果它包含至少 2 个数字,我如何让它返回 true?我想我必须在某处添加\d{2}

String pattern = "^[a-zA-Z0-9]*$";

if (s.matches(pattern) && s.length() >= 8){
    return true;
}
return false;

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您不需要单独的 if 条件。一个正则表达式将为您完成所有工作。

    String pattern = "^(?=.*?\\d.*\\d)[a-zA-Z0-9]{8,}$";
    

    【讨论】:

    • 不客气.. 或"^(?=.*?\\d.*\\d)(?=.*?[A-Za-z])[a-zA-Z0-9]{8,}$"
    【解决方案2】:

    你可以在一行中完成:

    return s.matches("(?=(.*?\\d){2})[a-zA-Z0-9]{8,}");
    

    【讨论】:

      【解决方案3】:

      以积极的前瞻性断言:

      ^<b><i>(?=(?:\D*\d){2})</i></b>[a-zA-Z0-9]*$

      这是regex demo

      【讨论】:

      • 谢谢!如果我早点知道正则表达式,我的生活会容易得多。我曾经将字符转换为它们的 ASCII 值并进行比较。
      • @Jack 你自己解析了字符串,我明白了:P
      • 是的,来自 Python,很高兴偶尔看到这样的功能
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多