正则表达式获取日期2016年8月22日?

时间:2016-09-07 10:29:43

标签: php regex

我有一个这样的字符串:

some text August 22, 2016

我想仅提供日期 - august 22, 2016

日期总是在字符串的末尾。

我试过这样的事......但没有成功......

$date2 = preg_match('/\b(.*?)\b&\/\d{2},\b\/\d{4}$/', $string, $date2);

/\b(.*?)\b&\/\d{2},\b\/\d{4}$/

1 个答案:

答案 0 :(得分:3)

您可以使用

'~\p{L}+\s*\d{2},\s*\d{4}$~'

请参阅regex demo

<强>详情:

  • \p{L}+ - 一个或多个字母
  • \s* - 0+ whitespaces
  • \d{2} - 2位数
  • , - 逗号
  • \s* - 0+ whitespaces
  • \d{4} - 4位数
  • $ - 字符串结束。

请注意,为了进一步说明这一点,您可能希望将\p{L}替换为枚举所有月份的替代组,例如可以进一步改进/增强的(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|Jule?|Aug(?:ust)?|Sep(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)。要仅匹配XXth和XXIst世纪,您可以将\d{4}替换为(?:20|19)\d{2}