function Check_Date_Time($date_time)
{
if (preg_match("/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/", $date_time))
{
return true;
}
else
{
return false;
}
}
if(Check_Date_Time($date)){
//echo 'correct';
}else{
die();
}
如果我这样设定日期
["DueDate3"]=> string(24) "2014-10-17 21:10:1751111"
验证器让它低谷,我不明白为什么:/如果它是一个正确使用的日期格式,它返回true。我真的不能使用其他格式 - 只有这是可以接受的
答案 0 :(得分:9)
向正则表达式添加开始^
和结束$
锚点。
if (preg_match("/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/", $date_time))
答案 1 :(得分:3)
^ Start of string or line
\A Start of string
$ End of string or line
\Z End of string
尝试在代码中加入一些锚点字符:
preg_match("/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/", $date_time)
您可以为regexp here找到更多基本字符。
答案 2 :(得分:1)
为你的正则表达式添加锚点:
if (preg_match("/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/", $date_time))
答案 3 :(得分:0)
尝试此正则表达式
$date_time = "2019-02-21 11:25:34";
if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $date_time)
这可能会帮助您。谢谢