提取是不太好正则表达式提取的.但是,可以用力检测一下.
我用的js代码是这样的:
function getd(sd){
re=/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/;
if(re.exec(sd)==null)
{
alert("Err");
}else{
alert("OK");
}
}
getd("2005-2-234");

解决方案 »

  1.   

    <?php
    $str1 = '2007-1-15';
    $str2 = '2007-01-15';
    preg_match("/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/is",$str1,$match1);
    preg_match("/^[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}$/is",$str2,$match2);
    print_r($match1);
    print_r($match2);
    ?> ===============---------- David程序调试 ----------
    Array
    (
        [0] => 2007-1-15
    )
    Array
    (
        [0] => 2007-01-15
    )
     
    Output completed (0 sec consumed) - Normal Termination
      

  2.   


    如果要进行严格的验证,比如说1月有31天,闰年2月28天等等这样的验证,就比如烦,不过估计你这里不会要这么严格的,以前看过一个招说是超强的日期正则,你可以参考一下
    ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$ 
      

  3.   

    <?php
    $str = "2007-1-2,2006/12/30,2007-01-02,2007-1-12";
    $patten = "/[0-9]{4}(\/|-)[0-9]{1,2}(?:\\1)[0-9]{1,2}/";
    preg_match_all($patten,$str,$arr);
    print_r($arr);
    ?>结果:
    ---------- Debug php ----------
    Array
    (
        [0] => Array
            (
                [0] => 2007-1-2
                [1] => 2006/12/30
                [2] => 2007-01-02
                [3] => 2007-1-12
            )    [1] => Array
            (
                [0] => -
                [1] => /
                [2] => -
                [3] => -
            ))Output completed (0 sec consumed) - Normal Termination