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