簡體   English   中英

Javascript RegEx:驗證時間

[英]Javascript RegEx: validate time

我有一個秒表變量,可以按以下格式獲取值: 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,}以允許它包含兩個或更多字符

如果你想看到匹配和不匹配的東西你可以在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

以下是我對此驗證的回答!

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 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM