if(preg_match('/^[0-9]{1,2}\-[0-9]{1,2}\-[0-9]{4}$/', '10-30-2013')){
echo 'true';
}
else {
echo 'false';
}
这不是真的。我认为regex
我错了。请告诉我们如何更正regex
答案 0 :(得分:2)
我建议不要使用正则表达式 - 使用正则表达式进行日期验证是一个非常困难的事情,因为任何给定月份的天数可能会有变化。
更好的方法是简单地使用PHP的DateTime
类来实际将其解析为日期对象。这也将验证它;如果它不符合指定的格式,那么它将不会解析。
$dateObj = DateTime::CreateFromFormat('m-d-Y',$inputString);
请参阅CreateFromFormat()
的PHP手册页。
答案 1 :(得分:1)
您应该使用专用函数来解析日期,即:
if (strptime ('10-30-2013' , 'm-d-Y') !== false) {
echo 'true'.PHP_EOL;
} else {
echo 'true'.PHP_EOL;
}
答案 2 :(得分:0)
实际上,正如其他人所确认的那样,你的正则表达式正常并返回true
。
但是当你使你的代码缩小时,我认为你试图向我们展示的输入字符串不是完全只是date
并且它在一个字符串内或者可能有尾随空格!
因此,在正则表达式中使用^
和$
会导致失败。