我已经编译了一个正则表达式(基于其他帖子),在文本牧马人中使用 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})$/
它应该匹配(并且在文本牧马人中匹配):
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 进行转义或格式化
你需要使用"s"标志来使其"dotall"匹配(包括换行符)
preg_match('#THE_REGEX_PATTERN#is',$myStr,$matches);
它正在开发正则表达式测试工具。
试试吧
http://toolspot.org/regex_tester.php