如何匹配至少包含7个不同数字的数字?

时间:2019-05-25 10:55:57

标签: php regex

我需要一个正则表达式模式,该模式必须匹配其非重复数字超过7位的任何数字。 例如它必须匹配:

1234567
122345678

但不匹配:

1222345
此数字中的

个非重复数字,例如1223456788,而整个数字为9。但该数字11111222345中的非重复数字仅为5。 这种模式不行:

/[0-9]{7,}/

我希望它计算非重复数字,而不是忽略任何具有重复数字的数字。

1 个答案:

答案 0 :(得分:2)

我对您的问题的理解是,您要提取至少由7个不同数字组成的数字。将使用preg_match_all()结合简单的非正则表达式检查来获取数字:

if(preg_match_all('~\d{7,}~', $str, $out) > 0)
{
  $res = array_filter($out[0], function($v) {
    return count(array_unique(str_split($v))) >= 7;
  });
}

See this demo at 3v4l.org

“重复”一词肯定会引起混乱。同样,“大于7位数字”至少应为8。