function validateDate( $date )
{
echo $date;
//2012-08-24 20:30:00
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
{
return true;
}
else
{
return false;
}
}
这总是返回false。我使用了一个工具来构建正则表达式,在那里它运行良好。当我向正则表达式添加“/”时,问题开始了。不知何故,PHP似乎需要这些,但我不知道为什么,也不知道为什么它会破坏我的正则表达式。
对于类似“2012-08-24 20:30:00”的内容,它应该返回TRUE,而对于“asdf2012-08-24 20:30:00asdf”或任何不符合我的正则表达式的内容都应该返回FALSE。
正如一些用户指出的那样,我的函数对于样本日期“2012-08-24 20:30:00”返回true。然而,只有当我手动设置$date='2012-08-24 20:30:00'时,它才会这样做。如果我在我的代码的其他地方调用具有完全相同字符串的函数,则会返回false。有人知道原因吗?
9999-99-99
这种错误的日期格式。虽然允许使用到9999年是很好的长远考虑,但我想"ninetyninghtuary"并不是一个真实存在的月份。 - Marc B/
并非必需--只需要一些匹配表达式分隔符即可。您可以使用|
、~
或甚至是字母数字字符,只要您在末尾匹配即可(并转义表达式主体中使用的相同字符实例)。 - Brian Warshaw