我无法完全理解 ^ 在我的 preg_match 中所做的事情。
if (preg_match('~^(\d\d\d\d)(-(\d{1,2})(-(\d{1,2}))?)?$~', trim($date), $dateParts)) {
echo the $dateparts and do some magic with them
} else {
tell me the date is formatted wrong
}
正如我所看到的,这正在查看 $date 是否与我读为 4 位小数 - 1 或 2 位小数 - 1 或 2 位小数的格式相匹配
如果匹配,则 IF 语句显示日期,如果不匹配,则会给出日期格式不正确的错误。
但是,仅将年份 $date = '1977' 传递给它(没有其他日期或月份)它仍然会通过并显示日期部分,我认为它会引发错误?
有人可以指出我在正则表达式中缺少什么吗?我猜它是 ^ 或者最后的 ?$ 可能意味着只匹配它的一部分?