判断是否存在3位连号的顺子或者连续3位的方法

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


评论/留言