我需要一个正则表达式模式,该模式必须匹配其非重复数字超过7位的任何数字。 例如它必须匹配:
1234567
122345678
但不匹配:
1222345
此数字中的个非重复数字,例如122345678
为8
,而整个数字为9
。但该数字11111222345
中的非重复数字仅为5
。
这种模式不行:
/[0-9]{7,}/
我希望它计算非重复数字,而不是忽略任何具有重复数字的数字。
答案 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;
});
}
“重复”一词肯定会引起混乱。同样,“大于7位数字”至少应为8。