为什么我的 ISO 日期不匹配模式?
给定的正则表达式:
/^([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})$/
设计以匹配“YYYY-MM-DD HH:MM:SS”格式的 ISO 样式日期。然而,尽管满足标准,它还是返回 false。问题在于包含表达式的斜杠 (/)。
PHP 正则表达式分隔符
在 PHP 中,正则表达式必须包含在分隔符内,通常是斜杠 (/ ),但也可以使用双引号 (")。 / 分隔符用于定义正则表达式的开始和结束,并防止与正则表达式中的其他特殊字符发生冲突。表达式。
解决问题
要解决问题,请确保满足以下条件:
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)
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)
使用日期时间的替代选项类
不要使用正则表达式,请考虑使用 PHP DateTime 类,它提供更强大、更可靠的日期验证和操作功能:
function validateDate($date, $format = 'Y-m-d H:i:s') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; }
此函数返回 true有效日期,无效日期为 false。它可用于验证各种格式的日期,包括 ISO。
以上是为什么我的 PHP ISO 日期正则表达式不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!