我允许用户从00:00:00
到23:00:00
选择一小时,并且需要检查他们是否提交了正确的格式。是否有正则表达式或PHP函数验证24小时格式,例如HH:MM:SS
?
我找到了一些正则表达式示例,但我正在验证的24小时时间总是设置为00
几分钟和几秒钟。只有小时变化。
例如
18:00:00, 23:00:00, 01:00:00
答案 0 :(得分: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
答案 1 :(得分: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!
}
答案 2 :(得分:2)
试试这个
$time="23:00:00";
preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time);
答案 3 :(得分:2)
通过此功能进行检查,您可以将该功能添加到Laravel global helper functions file
的CodeIgniter帮助文件中,并多次调用
<?php
if(!function_exists("check_24_timeFormat")) {
/**
*
* This for check time is in 24 time format
*
* @param string $time [ $time => time in 24 hours format like 23:00:00 ]
* @author Arafat Thabet <arafat.733011506@gmail.com>
* @return bool
*/
function check_24_timeFormat($time){
if (preg_match("#((0([0-9])|(1[0-9]{1})|(2[0-4])):([0-5])([0-9]):([0-5])([0-9]))#", $time)) {
return true;
}
else
{
return false;
}
}
}
答案 4 :(得分: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!'
答案 5 :(得分:0)
这对我来说就像是一种魅力。
$time = "23:59:60";
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time)
答案 6 :(得分:0)
尽管选择的答案是绝对可以的,但我不是强加格式的人。我的想法是,如果您可以解释数据,则格式并不重要。当然,您是格式失败者,您做出的假设越多,您承担的风险就越大。但是提供确认屏幕通常可以解决假设。所以,我写道:
/* Sample usage:
* echo '<ol>',
* '<li>validateTime ("13:23") = ', (validateTime ('13:23') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("03:23 ") = ', (validateTime ('03:23 ') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("03:23 Am") = ', (validateTime ('03:23 aM') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("03:23Am") = ', (validateTime ('03:23aM') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("03:23 pM") = ', (validateTime ('03:23 pM') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("323") = ', (validateTime ('323') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("058") = ', (validateTime ('058') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("1323pm") = ', (validateTime ('1323pm') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("1323am") = ', (validateTime ('1323am') ? 'TRUE' : 'FALSE'), '</li>', // TRUE - I think this one makes sense, but I'm not sure. 13th hour of the day, starting in the AM?
* '<li>validateTime ("323pm") = ', (validateTime ('323pm') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("3") = ', (validateTime ('3') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("3PM") = ', (validateTime ('3PM') ? 'TRUE' : 'FALSE'), '</li>', // TRUE
* '<li>validateTime ("13:73") = ', (validateTime ('13:73') ? 'TRUE' : 'FALSE'), '</li>', // FALSE
* '<li>validateTime ("25:23") = ', (validateTime ('25:23') ? 'TRUE' : 'FALSE'), '</li>', // FALSE
* '<li>validateTime ("Any crap") = ', (validateTime ('Any crap') ? 'TRUE' : 'FALSE'), '</li>', // FALSE
* '</ol>';
*/
function validateTime ($testTime)
{
define ('regExpPattern', '/^([01]?[0-9]|2[0-3])([:]?[0-5][0-9])?[ ]?([apAP][mM])?$/');
/* regExpPattern explanation
/^ # String must begin with.
( # Start group.
[01] # A 0 or 1.
? # Optionally.
[0-9] # 0 through 9.
| # Or.
2 # 2.
[0-3] # 0 through 3.
) # End of group. This group will match hour in a 24 hour clock.
( # New group.
[:]? # Optional colon.
[0-5][0-9] # Minutes, 00 through 59.
) # End of group.
? # Make previous group optional.
[ ]? # Optional space.
( # New group.
[apAP] # One of the following 'apAP'.
[mM] # One of the following 'mM'.
) # End of group.
? # Make previous group optional. This allows for things like 3 o'clock.
$/ # Must end with. */
return preg_match (regExpPattern, trim ($testTime));
} // function validateTime ($testDate)
如果您看到改进或错误,请告诉我。
我应该接受其他分隔符。如果有人选择输入13.45怎么办?那应该是有效时间吗?毕竟,我确实知道用户的意思。
现在,下一步将是获取所有可能格式的用户输入并使其对SQL友好。
享受,