猫了个咪哟!!正则表达式真难学!!!苦涩难懂啊!!!
$str="~2012-3-1+2012-12-31+14200++";$flag=ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $v, $regs);与
 $flag=ereg("~([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $v, $regs);
这么写并没区别啊,同样都会返回 flag 是正数,为什么会没区别啊? $flag=ereg("~([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\+$", $v, $regs);这么写为啥又不能返回 flag 为正值啊?

解决方案 »

  1.   

    $patn="/~(\d+)-(\d+)-(\d+)/";$paten="/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/";$p3="([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})";
    $arr=array();$flag=ereg($p3, $str, $regs);if($flag)
    echo "$regs[1]-$regs[2]-$regs[3]";
    else
    echo 'fuck';
    只有 $p3 可以!! 其他都不行!
      

  2.   

    为什么会没区别啊? $flag=ereg("~([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\\+$", $v, $regs);这么写为啥又不能返回 flag 为正值啊?
      

  3.   


    注意字符串"和'的区别,php解释器自身会做一次转义, 而你的目的是让正则库看到你的转义, 自己思考一下.
      

  4.   

    $str="~2013-12-31+2012-12-31+14200++";$p3="\+([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})";$p4="~([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\\+$";$flag=ereg($p4, $str, $regs);if($flag)
    echo "$regs[1]-$regs[2]-$regs[3]";
    else
    echo 'fuck';这里你如果用 $p4 输出就是 fuck