0~9数字组成三位数,这个三位数最多只能有一个数字重复,用正则怎么匹配
如112,123,454,018都是正确的
而111就不正确

解决方案 »

  1.   

    三位数倒好办$a = array('112', '123', '454', '018', '111');$a = preg_grep('/(\d)\1{2}/', $a, PREG_GREP_INVERT);
    print_r($a);
    //输出Array
    (
        [0] => 112
        [1] => 123
        [2] => 454
        [3] => 018
    )
      

  2.   

    if(preg_match('/(\d)\1{2}/', $s))
               echo '不正确';
    else
               echo '正确';
      

  3.   

    我要的是正则,而你用的是preg_grep的不匹配模式,难道就没有直接满足要求的正则?
      

  4.   

    如果3位数只想实现这个功能,何苦用正则,用这个更快:
    $a = '012';
    if ($a[0] != $a[1] || $a[0] != $a[2] || $a[1] != $a[2]) {
      echo 'yes';
    } else {
      echo 'no';
    }