假设有一组数字,长度未知,要求用正则判断是否为递增的数字。如有下面一组数字:1234,5687,789,01,4567891234、789、01、456789为真,5687为假。先谢了。

解决方案 »

  1.   

    我也不懂啊,一起学习吧!也可以去问啊资料网刊看,里面有很多的建站PHP资料,强烈推荐!http://www.wenaa.com/
      

  2.   

    简单的方法是反过来看0123456789 是否匹配 你的这个数字!preg_match('456789','0123456789 ')
      

  3.   

    <?php
    error_reporting(E_ALL);
    $str = '1234,5687,789,01,456789';
    $nums = explode(',',$str);function isInc($str){
    $isInc = true;
    if (strlen($str)>0){
    for($i=1;$i<strlen($str);$i++){
    if ($str[$i] > $str[$i-1]){
    $isInc &= true;
    }else{
    $isInc &= false;
    break;
    }
    }
    }else{
    $isInc = false;
    }
    return $isInc;
    }
    $result = array();
    foreach ($nums as $num){
    $result[] =  array(
    $num,
    isInc($num)
    );
    }
    var_export($result);
    ?>
    结果:array (
      0 => 
      array (
        0 => '1234',
        1 => 1,
      ),
      1 => 
      array (
        0 => '5687',
        1 => 0,
      ),
      2 => 
      array (
        0 => '789',
        1 => 1,
      ),
      3 => 
      array (
        0 => '01',
        1 => 1,
      ),
      4 => 
      array (
        0 => '456789',
        1 => 1,
      ),
    )
    3楼那种 1357 就不行了。
      

  4.   

    给你一种思路:
    <?php
    //特殊情况特殊处理的方法$str = '1234,5687,789,01,456789';$array = explode(',',$str);
    function test($str){
    $standard = '0123456789';
    $length = strlen($str);
    $first = substr($str, 0, 1); //字符串中第一个字符
    $temp = substr($standard, strpos($standard,$first), $length); //return ($temp == $str) ? true : false; //如果相等则为true,为假则false
    if ($temp == $str)
    {
    echo "<font color=green>$str 是个连续递增的数字 </font><br />";
    }
    else
    {
    echo "<font color=red>$str 不是个连续递增的数字 </font><br />";
    }
    }foreach ($array as $i => $value) {
       test($value);
    }
    ?>
    运行结果:
    1234 是个连续递增的数字
    5687 不是个连续递增的数字
    789 是个连续递增的数字
    01 是个连续递增的数字
    456789 是个连续递增的数字