如何使用preg匹配以hh:mm验证时间字符串?

时间:2015-07-07 14:02:55

标签: php regex string time 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"它会打印出来。但是我需要输出" 失败"。

3 个答案:

答案 0 :(得分:1)

使用anchors匹配开头和结尾,例如

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

答案 1 :(得分:0)

我几分钟前就为自己编了代码。它基本上是在00:00到23:59之间进行控制

修改

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

答案 2 :(得分:0)

您需要确保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';