0

在 Text Wrangler 中使用 grep 进行测试时,我编译了一个完美匹配多种日期格式的正则表达式(基于其他帖子),但是当我将它放入 PHP 并与 preg_match 一起使用时,它不匹配任何东西。

这是正则表达式:

/^(((?:0?[1-9]|1[012])|(?:0?[1-9]|[12][0-9]|3[01])|([a-zA-Z]+))([.]?[-.\\/\s]))?(((?:0?[1-9]|1[012])|(?:0?[1-9]|[12][0-9]|3[01]))([,]?[-.\\/\s]))?((?:20|19)[0-9]{2})$/

它应该匹配(并且在 Text Wrangler 中匹配):

03/12/2000
4 4 2011
16 04 1985
11/11/1911
04.13.2013
May 12, 1912
July 13 2012
March 1999
2015
1944

它不匹配:

2000 12 4
11/11/1111
40.13.2013

对于 preg_match 和 grep,我是否遗漏了一些应该转义或格式不同的东西

4

2 回答 2

1

您需要使用“s”标志使其“dotall”匹配(包括换行符)

preg_match('#THE_REGEX_PATTERN#is',$myStr,$matches);
于 2013-09-16T14:09:48.470 回答
0

它正在开发正则表达式测试工具。

试试看

http://toolspot.org/regex_tester.php

于 2013-09-16T14:13:04.890 回答