解决方案 »

  1.   

    这个不适合用正则吧!
    自己写个函数就可以判断的
    用strlen把不同位数的分开,再分别判断几种类型
      

  2.   

    <?php
    header("Content-type: text/html; charset=utf-8");
    function isABType($password) {
        if (strlen($password) < 6 || strlen($password) % 2 != 0)
            return false;
        $firstPos = $password[0];
        $secondPos = $password[1];
        for ($i = 2; $i < strlen($password); $i++) {
            if ($i % 2 == 0) {
                if ($password[$i] == $firstPos)
                    continue;
                else
                    return false;
            } else {
                if ($password[$i] == $secondPos)
                    continue;
                else
                    return false;
            }   
        }
        return true;
    }
    function isAABBType($password) {
        if (strlen($password) < 6)
            return false;
        for ($i = 0; $i < strlen($password); $i += 2) {   
            if (isset($password[$i+1]) && $password[$i] == $password[$i+1])
                continue;
            else
                return false;
        }
        return true;
    }
    function isSort($password) {
    //    if (strlen($password) < 6)
    //        return false;
        $arr = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
        for ($i = 0; $i < strlen($password); $i++) {
            if (array_key_exists($password[$i], $arr) && isset($password[$i+1])) {
                $firstIndex = array_keys($arr, $password[$i]);
                $secondIndex = array_keys($arr, $password[$i+1]);
                $result = $firstIndex[0] - $secondIndex[0];
                if ($result == 1 || $result == -1)
                    continue;
                else
                    return false;
            }
        }
        return true;
    }
    echo $str = isABType("1212121") ? '是' : "不是";
    echo "<br/>";
    echo $str2 = isAABBType("1122112") ? '是' : "不是";
    echo "<br/>";
    echo $str3 = isSort("0123456789") ? '是' : "不是";
    ?>