我正在使用 php 的 preg_match 从字符串中获取命名的子组。我正在将用户生成的日期/时间字符串解析为格式正确的日期/时间标记。
这是我的正则表达式
~(?P<month>\d?\d)(/|-)(?P<day>\d?\d)(/|-)(?P<year>\d\d\d?\d?) +(?P<time>[\d: +((A|a)|(P|p))(M|m)]+)~i
它可以正确解析日期,例如
01-17-10 09:30 pm
2/1/2010 06:19am
进入它们的组成部分。但是,它接受02/11/2010 06:19
,没有 am/pm 字符串,我不希望它这样做。我究竟做错了什么?