Php preg_匹配字符串,无论格式是否正确

Php preg_匹配字符串,无论格式是否正确,php,regex,preg-match,Php,Regex,Preg Match,我在preg_匹配中使用了这种字符串格式: [Day][MonthAbbr] [Date] [Hour]:[Minutes][AM/PM] example: ThuDec 27 2:00am 使用此$pattern和某种代码: $pattern = "/([A-Z]{2}\w+)([A-Z]{2}\w+)\s+(\w+)\s+(\d+):(\d+)(..)/ims"; $match = array(); if (preg_match($pattern, rtrim($date), $matc

我在preg_匹配中使用了这种字符串格式:

[Day][MonthAbbr] [Date] [Hour]:[Minutes][AM/PM]

example:
ThuDec 27 2:00am
使用此$pattern和某种代码:

$pattern = "/([A-Z]{2}\w+)([A-Z]{2}\w+)\s+(\w+)\s+(\d+):(\d+)(..)/ims";
$match = array();
if (preg_match($pattern, rtrim($date), $match)) {
    echo '<pre>';
        print_r($match);
    echo '</pre>';
} else {
    echo 'Could not parse date.';
}
下面是进行比较的屏幕截图:

我在预赛中使用的图案有什么问题吗?



这段代码对我来说非常有效。

您是否复制并粘贴了错误的值或自己在这里键入了它?若在白天和小时之间只有额外的空间(ASCII 32),那个么模式将匹配它。但是,如果有不间断的空格(Unicode U+00A0),它将不会被
\s+
匹配,但不确定您的问题,请尝试这个(稍微修改的)正则表达式:
/([a-z]{3})([a-z]{3,4})\s+(\d{1,2})\s+(\d{1,2}):(\d{1,2})[ap]m/code>我用您的字符串测试了它,似乎没有问题。
ThuDec 27 2:00am
ThuDec 27  4:30am (gives the error)
<?php
$a = "ThuDec 27  4:30am";
$pattern = "/([a-z]{3})([a-z]{3})\s+(\d+)\s+(\d+):(\d+)([a-z]{2})/i";
$match = array();
if (preg_match($pattern, $a, $match)) {
    echo '<pre>';
        print_r($match);
    echo '</pre>';
} else {
    echo 'Could not parse date.';
}
?>