2

我有一个秒表变量,可以按以下格式获取值: 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 位或更多位?

4

5 回答 5

15
/^\d{2,}:\d{2}:\d{2}$/

将 + 更改为 {2,} 以允许它包含两个或更多字符

如果你想看看匹配和不匹配的东西,你可以在这里玩http://regexr.com?31fu4

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

^\d{2,}:(?:[0-5]\d):(?:[0-5]\d)$
于 2012-07-09T18:23:47.343 回答
2

http://gskinner.com/RegExr/?31fug ^\d{2,}(:[0-5]\d){2}$

于 2012-07-09T18:58:28.543 回答
2
// 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;

}
于 2013-04-02T08:52:26.790 回答
1

另一种解决方案可能是:

 $('#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');
        }
    });

这对我有用...基于页面:http ://www.mkyong.com/regular-expressions

于 2014-09-09T20:02:50.700 回答
0

这是我对此验证的回答!

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;
}
}

您可以将我的答案扩展到 8 个字符...

于 2015-01-20T17:22:10.047 回答