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。这真的很有帮助。