Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式:验证时间_Javascript_Jquery_Regex_Time - Fatal编程技术网

Javascript正则表达式:验证时间

Javascript正则表达式:验证时间,javascript,jquery,regex,time,Javascript,Jquery,Regex,Time,我有一个秒表变量,可以按以下格式获取值: HH:MM:SS大部分时间'HH'可以超过24小时-基本上是任何有效数字 我对这个正则表达式不是很在行,但是我能够写一些大部分都不错的东西,但是无法验证小时是否是个位数。例如,下面的正则表达式传递时间1:10:09,尽管它无效。有效的小时部分应为01 //var stopWatchTime = '02:10:09'; //Valid //var stopWatchTime = '00:10:09'; //Valid //var stopWatchTime

我有一个秒表变量,可以按以下格式获取值:
HH:MM:SS
大部分时间<代码>'HH'可以超过24小时-基本上是任何有效数字

我对这个正则表达式不是很在行,但是我能够写一些大部分都不错的东西,但是无法验证小时是否是个位数。例如,下面的正则表达式传递时间
1:10:09
,尽管它无效。有效的小时部分应为
01

//var stopWatchTime = '02:10:09'; //Valid
//var stopWatchTime = '00:10:09'; //Valid
//var stopWatchTime = '1234:10:09'; //Valid
//var stopWatchTime = ':10:09'; //Invalid
//var stopWatchTime = 'ax:10:09'; //Invalid
var stopWatchTime = '1:10:09'; //Invalid, should be 01:10:09. 

if(!stopWatchTime .match(/^\d+:\d{2}:\d{2}$/)){
    alert('invalid time- ' + stopWatchTime);
}
else{
    alert('valid time - ' + stopWatchTime);
}
我应该在正则表达式中更改什么,以表示它应该检查任何数字,但小时部分应该有2位数或更多

/^\d{2,}:\d{2}:\d{2}$/
将+更改为{2,}以允许它包含两个或更多字符

如果你想看到匹配和不匹配的东西,你可以在这里玩

编辑: 此外,如果您只想在小时/分钟部分中最多匹配59,请使用

^\d{2,}:(?:[0-5]\d):(?:[0-5]\d)$
^\d{2,}(:[0-5]\d){2}$

//使用此函数以HH:mm格式验证时间
// use this function to  validate time in HH:mm formate

function validate_time(time){
    var a=true;

    var time_arr=time.split(":");
    if(time_arr.length!=2){           
        a=false;
    }else{
        if(isNaN(time_arr[0]) || isNaN(time_arr[1])){                
            a=false;
        }
        if(time_arr[0]<24 && time_arr[1]<60)
        {

        } else{
            a=false;
        }         
    }
    return a;

}
函数验证时间(time){ var a=真; var time_arr=时间分割(“:”); 如果(时间到达长度!=2){ a=假; }否则{ 如果(isNaN(time_arr[0])| isNaN(time_arr[1]){ a=假; }
如果(time_arr[0]另一个解决方案可以是:

 $('#input-horaIni, #input-horaFin').blur(function () {
        var validTime = $(this).val().match(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/);
        if (!validTime) {
            $(this).val('').focus().css('background', '#fdd');
        } else {
            $(this).css('background', 'transparent');
        }
    });

这对我来说很有效……基于页面:

这是我的验证答案

function checkTimes(val){
val=new String(val);
if(val.length!=5){
    return false;
}
else{
    var hour=val.substring(0,2);
    var min=val.substring(3,5);
   if(val.substring(2,3)!==":") return false;
    if(isNaN(hour)) return false;
    if(isNaN(min)) return false;
    if(parseInt(hour)<24){
        if(parseInt(min)<60){
            return true;
        }
        else return false;

    }else return false;
}
}
函数检查时间(val){
val=新字符串(val);
如果(值长度!=5){
返回false;
}
否则{
var小时=val子串(0,2);
var最小值=val子串(3,5);
if(val.substring(2,3)!==“:”)返回false;
如果(isNaN(小时))返回false;
if(isNaN(min))返回false;

如果(parseInt(hour)/^\d+:\d{2}:\d{2}$/应该是/^\d{2}:\d{2}$/@Nemanja,这是我最初的正则表达式,但它在小时部分中的占比不超过2位。@Ohgoodwhy,我在超过2位的小时内无法完成此操作。极好的解决方案和很棒的链接。你不会相信我花了一些时间来起草此问题。因为我不想显得愚蠢。我尝试了各种选项,除了此
{2,}
。但是谢谢你的快速回复。我只能在7分钟后接受这个答案。等待……还有,
Ghost
谢谢你在最后加了一行,检查分/秒匹配0-59。这真的很有帮助。