按要求就是不要连号123,456,654,876这样出现,也不要666,222这样出现,没有找到好用的正则判断,自己写了一个方法:
//判断6位数是否有连号或者重复三位数的正则,比如123524,122248,154666,152344,181236这些都能判断
function isNormal($num)
{
$lenth = mb_strlen($num);
for ($i = 0; $i < $lenth; $i++) {
if ($i >= 1 && $i < $lenth - 1) {
$x = $num[$i - 1];
$y = $num[$i];
$z = $num[$i + 1];
if ($x == $y && $y == $z) {
return false;
echo "重复:$x=$y=$z", PHP_EOL;
} elseif (($x == $y - 1 && $y == $z - 1) || ($x - 1 == $y && $y - 1 == $z)) {
return false;
echo "连号:$x,$y,$z", PHP_EOL;
} else {
//echo "正常:$x,$y,$z", PHP_EOL;
}
}
}
return true;
}
$num = '126542166653210';
echo isNormal($num) ? 1 : 0;结果:
正常:1,2,6 正常:2,6,5 连号:6,5,4 正常:5,4,2 正常:4,2,1 正常:2,1,6 正常:1,6,6 重复:6=6=6 正常:6,6,5 正常:6,5,3 正常:5,3,2 连号:3,2,1 连号:2,1,0 1