没有必要为此使用正则表达式(实际上这需要更多的工作)。改用 PHP 的内置日期/时间函数:
strtotime
: 将字符串日期(几乎任何格式)转换为 Unix 时间戳
date
: 将时间戳格式化为人类可读的日期
$user_date; #the user-supplied date, any format
$format = 'm/d/Y'; #your desired date format, in this case MM/DD/YYYY
#convert the date to your format
$formatted_date = date($format, strtotime($user_date));
或者,您可以使用DateTime
对象执行此操作。鉴于$user_date
上述$format
情况:
$user_date_obj = new DateTime($user_date);
$formatted_date = $user_date_obj->format($format);
或者
$formatted_date = date_format(date_create($user_date), $format);
..
综上所述,要回答您的问题,只需划定您的正则表达式。斜杠会起作用,但由于您在正则表达式中匹配文字斜杠,因此使用其他东西更容易,比如条/管道:
preg_match_all("|[0-9]{0,2}/[0-9]{0,2}/[0-9]{4}|", $string, $matches);
这样,您就不需要转义斜线文字。
顺便说一句,您还可以将此正则表达式缩短为:
"|(\d{0,2}/){2}\d{4}|"
\d
与 相同[0-9]
,您可以将两次出现的\d{0,2}/
into结合起来(\d{0,2}/){2}
。不过,有些人可能会觉得这更难阅读。