如何使用预匹配验证 hh:mm 中的时间字符串?

How to validate time string in hh:mm using preg match?

以下是以下可能性。时间为12小时

 Inputs          Output should as

"05:30"           True
"asasds"          FALSE
"05:30:sads"      FALSE
"ADAS:05:40"      FALSE
"04:30:40"        FALSE

下面是我写的代码,

 $value = "05:30" ;
if(!preg_match("/(1[012]|0[0-9]):([0-5][0-9])/", $value)){
    echo "failed"; exit;
}
echo "passed"; exit;

但如果我给出 $value = "05:30:asdsa",它会打印为通过。但是我需要输出为“failed”。

使用anchors来匹配开始和结束,例如

!preg_match("/^(1[012]|0[0-9]):([0-5][0-9])$/", $value)
            //^ See here                   ^

几分钟前我刚刚为自己编写了代码。基本上控制在00:00和23:59

之间

编辑

preg_match("/(0?\d|1\d|2[0-3]):[0-5]\d/", $line, $matches_time);

您需要确定 25:30 无效。 24:00 无效,但 00:00 有效。 这段代码可以让它变得完美:

$string='00:34';  
$pattern='%^([0-1][0-9])|([2][0-3]):[0-5][0-9]$%';

if(preg_match($pattern,$string))
    echo '<b>'.$string.'</b> is a valid time in 24 hours format';

如果你只想查看 12 小时格式,你可以使用这个:

$string='09:24';  
$pattern='%^([0][0-9])|([1][0-2]):[0-5][0-9]$%';

if(preg_match($pattern,$string))
    echo '<b>'.$string.'</b> is a valid time in 12 hours format';