PHP /正则表达式:匹配/替换24小时

con*_*oob 0 php regex

我怎么能这样一条线:

数字演示(10:45),(11:30),12:00,12:40,13:20,14:00,14:40,15:20,16:00,16:40,17:20, 18:00,18:40,19:20,20:00,20:40,21:20,22:00,22:40,23:10,23:40

并且匹配所有24小时,所以我可以使用date()转换为更人性化的格式?

另外,我想在24:00-24:59范围内匹配时间

谢谢!

sal*_*the 5

您可以使用如下所示的正则表达式,它允许值从00:00直到24:59包含.

(?:[01][0-9]|2[0-4]):[0-5][0-9]
Run Code Online (Sandbox Code Playgroud)

你似乎知道你在做什么,所以我只给出一个简短的例子,而不将时间转换成日期字符串.

$times = array();
if (preg_match_all('/(?:[01][0-9]|2[0-4]):[0-5][0-9]/', $subject, $matches)) {
    $times = $matches[0];
}
print_r($times);
Run Code Online (Sandbox Code Playgroud)

如果主题字符串有可能具有值1234:5678,这将导致上述正则表达式的误报,那么您可以将模式包装在\b其他断言中,以确保时间格式化的数字独立存在.