2012-06-12 159 views
8

我允许用户从00:00:0023:00:00选择一小时,并且需要检查他们是否提交了正确的格式。是否有正则表达式或php函数验证24小时格式HH:MM:SSPhp验证24小时时间格式

我发现了一些正则表达式的例子,但我验证的24小时时间总是设置为00分钟和秒。只有小时不一。

例如

18:00:00, 23:00:00, 01:00:00 
+0

用户可以改变他们的选择?例如输入“25:00:00”或“香蕉”? – Zuul

+0

sachleen的答案就是你要求的答案,但如果你真正的问题是为用户提供一种输入00到23之间数字的方法,可以考虑使用下拉菜单。 –

+0

@Zul确定他们可以,他们正在从下拉列表中选择时间 – CyberJunkie

回答

19

这24小时时间包括秒

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] 

如果你只想要00分钟和秒钟匹配,则

([01]?[0-9]|2[0-3]):00:00 
+0

谢谢!你的代码会帮助很多人。 – CyberJunkie

+0

我忘了问...以下分隔符对于正则表达式2是否正确? '/ ^([01]?[0-9] | 2 [0-3]):00:00 $ /' – CyberJunkie

+2

'^'表示字符串的开始和字符串的$ $结尾。因此,对于那些人来说,时间可能没有任何东西。所以,是的,这不仅是可行的,这是正确的做法。 – sachleen

2

尝试这个

$time="23:00:00"; 

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time); 
+0

工程就像一个魅力! (拯救了我的一天)。 –

3

在这里它的最后一个样品已准备好使用。

$myTime = '23:00:00'; 

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime); 

if ($time == 1) 
{ 
    // make a error! 
} 
else 
{ 
    // make a error! 
} 
1

它是一个RegEx吗?您可以轻松使用PHP strtotime-函数验证日期和时间(也可以在没有日期的情况下运行)。 strtotime返回false(在PHP 5.1之前的-1)如果给定时间无效。因此不要忘记使用===操作数!

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!' 
0

这对我来说就像一个魅力。

$time = "23:59:60";  
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time) 
相关问题