php regex preg_match_all not working correctly
我使用preg_match_all检查以capital开头的日期和单词,问题出在日期上,因为在regex测试仪上它告诉我这个regex很好,但在php脚本中它没有正确执行,我的模式是:
1 | $pattern ="#(((0[1-9]|[12][0-9]|3[01])([\/\.\\\-])((0[1-9]|1[012])\11)?)(\d\d\d\d|\d\d))+|([A-Z][a-z]+)(\s[A-Z][a-z]+)*#"; |
我希望它能和这个相匹配:"1990年10月12日"和"1990年10月12日"
谢谢你的帮助!
1 2 3 4 5 | $string = '12.10.1990 as well as 12.10.90'; preg_match_all('/[01]\d\.[0-3]\d\.\d{2,4}/', $string, $match); print_r($match); |
将此模式用于regex的日期匹配部分。不管你是想重新发明轮子。有内置的PHP函数可以帮助您更好地确定日期是否有效。
- http://php.net/manual/en/function.checkdate.php
使用explode(),然后将每个段放入此函数中,例如:
1 2 3 4 5 |
号