php中的月正则表达式问题。验证问题

时间:2011-05-22 08:56:12

标签: php

function preveriDatum($string)
{   
    if (preg_match("^(3)?(?(1)[0-1]|(0)?(?(2)[1-9]|[12][0-9]))\.(0)?(?(3)[1-9]|1[0-2])\.[1-9][0-9]{3}$^", $string)) 
        return true;
    else 
        return false;
}

有效期为2010年1月13日,但不适用于2010年1月13日。我可以将其定为13.1.2010吗?

3 个答案:

答案 0 :(得分:4)

好悲伤,你想在这做什么?你能把它放到DateTime类中并以这种方式验证吗? http://php.net/manual/en/book.datetime.php

对于正则表达式,无论如何,你想要一个*而不是一个?对于0.?要求至少有一个实例。而不是(0)?使用(0)*。

答案 1 :(得分:2)

.(0)?(?(3)[1-9]|1[0-2])更改为.(0)?(?(3)[1-9]|1[0-2]|[1-9])。另请考虑使用日期库。

答案 2 :(得分:2)

您可以使用:

if (preg_match("^(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[012])\.([1-9][0-9]{3})$", $string)) 

当然更好的是使用DateTime类(http://php.net/manual/en/book.datetime.php)。