2011-11-05 100 views
0

我想验证PHP中的日期格式YYYY-MM-DD。但有些事情是错的,我找不到它?正则表达式一直告诉我格式是错误的,当它是正确的。以日期格式发送正则表达式

$datePattern = '/^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2]])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/'; 
$date = '2011-11-05'; 
if(!preg_match($datePattern,$date)){ 
    die('Wrong format in date!'); 
} 

回答

1

你在你的正则表达式有一个额外的](月子表达式)是没有必要的。所以它应该是

^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$ 
+0

是的,这是正确的! – einstein

0

。在你的正则表达式的额外]

'/^(2[0-9][0-9][0-9])\-(0[1-9]|1[0-2]])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/' 
            ^

放弃它。

而正则表达式不是验证日期的最佳工具。您应该使用checkdate函数。

1

你可以把它简化一点:

/^(2[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/