use*_*607 1 php regex preg-match-all preg-match
我使用preg_match_all来检查以大写字母开头的日期和单词,问题出现在日期上,因为在正则表达式测试器上它告诉我这个正则表达式没问题但是在php脚本中它没有正确地执行它,我的模式是这样的:
$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]+)*#";
Run Code Online (Sandbox Code Playgroud)
我想要它匹配:"12.10.1990"以及"12.10.90"
谢谢你的帮助!
$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);
Run Code Online (Sandbox Code Playgroud)
将此模式用于正则表达式的日期匹配部分.无论你是想重新发明轮子.内置的PHP函数可以帮助您更好地确定日期是否有效.
使用explode()然后将每个段放入此函数中,例如:
$string = '12.10.1990';
//$string = '12.10.90';
$string = explode('.', $string);
var_dump(checkdate($string[0], $string[1], $string[2]));
Run Code Online (Sandbox Code Playgroud)