繁体   English   中英

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

[英]Issue with a regular expression in date format

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

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

^(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])$

你可以稍微简化一下:

/^(2[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|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])$/'
                                     ^

算了吧。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM