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吗?
答案 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)。