正则表达式提取非标准日期格式

时间:2014-03-23 14:14:20

标签: regex

我需要正则表达式从字符串中获取日期部分(即2014年3月23日),格式如下:

  

2014年3月23日,包括50,000 67 A Part 500

我已经尝试了以下但它不起作用,任何想法?

preg_match("/[0-9]+[ ][a-zA-Z][ ][201][0-9]$/",$str,$matchx);

我正在使用PHP

1 个答案:

答案 0 :(得分:0)

你需要有正确的量词;不要为字符串201或空格使用类(虽然前者比后者更麻烦),并且你必须允许在日期之后发生的事情(所以摆脱{{1} }):

$

顺便说一下 - 我选择的表单不允许preg_match("/[1-9][0-9]? [A-Z][a-zA-Z]+ 201[0-9]/",$str,$matchx); - 它不会让你有一个前导零,并且它希望当月的第一个字母大写。你当然可以轻松改变它。

测试:

09 March

结果:

<?php
$str="23 March 2014 and includes 50,000 67 A Part 500";
preg_match("/[1-9][0-9]? [A-Z][a-zA-Z]+ 201[0-9]/",$str,$matchx);
print_r($matchx);
?>