代码之家  ›  专栏  ›  技术社区  ›  Scott

php regex问题-使用前5个相同的数字和后5个其他数字测试10个数字

  •  1
  • Scott  · 技术社区  · 14 年前

    String _value = '1111122222';
    if (_value.matches("(1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5}){2}")) {
        // check for number with the same first 5 and last 5 digits 
        return true;
    }
    

    如评论所示,我想测试像“111112222”或“555556666”这样的字符串

    我怎么能用PHP做这个?

    斯科特

    4 回复  |  直到 14 年前
        1
  •  2
  •   Gumbo    14 年前

    你可以用 preg_match 为此:

    preg_match('/^(1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5}){2}$/', $_value)
    

    这将返回匹配数(即0或1)或 如果有错误。自从 字符串 s公司 matches 真的 赛前比赛 不(子字符串就足够了),您需要为字符串的开始和结束设置标记 ^ $ .

    也可以使用此较短的正则表达式:

    ^(?:(\d)\1{4}){2}$
    

    ^(\d)\1{4}(?!\1)(\d)\2{4}$
    
        2
  •  2
  •   ircmaxell    14 年前

    好吧,你可以:

    $regex = '/(\d)\1{4}(\d)\2{4}/';
    if (preg_match($regex, $value)) {
        return true;
    }
    

    它应该比你发布的regex更有效率(可读性)。。。

    或者,更短(可能更干净)的正则表达式:

    $regex = '/((\d)\2{4}){2}/';
    
        3
  •  0
  •   Svisstack    14 年前
    $f = substr($_value, 0, 5);
    $s = substr($_value, -5);
    return (substr_count($f, $f[0]) == 5 && substr_count($s, $s[0]) == 5);
    
        4
  •  0
  •   Jason McCreary    14 年前

    preg_match() 关键是: http://www.php.net/preg_match

    $value = '1111122222';
    if (preg_match('/^(1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5}){2}$/', $value)) {
        // check for number with the same first 5 and last 5 digits 
        return true;
    }