Javascript RegEx:validation时间

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

我对这个正则表达式的东西并不是那么好,但能够写出一些对大多数情况有益但却无法validation小时是否为单位数的东西。 防爆。 在正则表达式下方通过时间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,}以允许它包含两个或更多字符

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

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

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

http://gskinner.com/RegExr/?31fug ^\d{2,}(:[0-5]\d){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; } 

另一个解决方案是:

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

以下是我对此validation的答案!

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

你可以扩展我的答案8chars ...