以日期格式发布正则表达式

时间:2011-11-05 03:18:52

标签: php regex

我想在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!');
}

3 个答案:

答案 0 :(得分: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])$

答案 1 :(得分:1)

您可以稍微简化一下:

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

答案 2 :(得分: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功能。