【发布时间】:2013-09-16 14:08:26
【问题描述】:
我编译了一个正则表达式(基于其他帖子),在 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 有什么我遗漏的应该转义或格式不同的东西
【问题讨论】:
-
你能说明你是如何使用 preg_match 的吗?
-
这是一个很长的正则表达式。您可以通过拆分它的各个部分并查看它何时损坏来进行调试。
-
smerny - 标准用法:if (preg_match($pattern,$myStr)) ...
-
您能告诉我们您使用的是什么操作系统吗? grep 使用的正则表达式的默认风格可能因系统而异。此外,是否有任何命令行参数被传递给 TextWrangler 中的 grep 命令?
-
我在 OSX 10.8 上,没有我知道的命令行参数。只是股票文本牧马人。