按要求就是不要连号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