Javascript regext时间格式检测

时间:2015-08-28 14:42:06

标签: javascript regex time

我正在尝试编写一些JS代码来验证以24小时格式输入到输入字段的时间。我希望能够检测到HH:MM,HHMM和HMM并拒绝任何其他内容。我也想检测一下24小时是否可能 - 例如拒绝26:70和喜欢这就是我目前无法做到的事情:

function validateTime(rawtime) {
 var timeregex = new RegExp('([01]?[0-9]|2[0-3]):[0-5][0-9]');
 var timeregex4 = new RegExp('([01]?[0-9]|2[0-3])[0-5][0-9]');
 var timeregex3 = new RegExp('[0-9][0-5][0-9]');
 var numeric = new RegExp('^[0-9]+$');

 if (numeric.test(rawtime))
  { 

    if ((rawtime.length == 4) && (timeregex4.test(rawtime))){
        document.getElementById("fdbk").innerHTML ="time with 4 digits";
        }
    else if ((rawtime.length == 3) && (timeregex3.test(rawtime))){
      document.getElementById("fdbk").innerHTML ="time with 3 digits";
    }
   }
   else if (timeregex.test(rawtime)) {
    document.getElementById("fdbk").innerHTML ="time with :";

  }
}

Jsbin Example

2 个答案:

答案 0 :(得分:2)

不太清楚问题是什么,这很容易^ _ ^

var timeregex = /^([01]?[0-9]|2[0-3]):?([0-5][0-9])$/;

现在匹配......

var match = rawtime.match(timeregex);

你得到......

var hours = parseInt(match[1],10),
    minutes = parseInt(match[2],10);

完成?

答案 1 :(得分:0)

这是一个简单的功能(不使用RegEx),可验证您所要求的时间格式。

function valTime(time) { 
    var len = time.length,
        hour,
        mins;

    if(len == 5) { //HH:MM
        var spl = time.split(':');
        if(!$.isArray(spl)) { return false; } //Not an array
        hour = spl[0];
        mins = spl[1];
    }
    if(len == 4) { //HHMM
        hour = time[0] + time[1];
        mins = time[2] + time[3];
    } 
    if(len == 3) { //HMM
        hour = time[0];
        mins = time[1] + time[2];
    }

    if(+hour <= 23 && +mins <= 59) {
        return true;
    } else {
        return false;
    }
}