时间正则HH:MM

时间:2014-03-21 16:00:56

标签: regex

我正在寻找一个用于验证时间的正则表达式字符串。 我使用^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$验证我的HTML表单,但是我希望在我的HTML文本输入字段上为时间输入创建某种输入掩码,我将附加到keydown事件以进行测试用户输入的输入。

接受的值

  • 1
  • 12
  • 12:
  • 12:5
  • 12点59

1 个答案:

答案 0 :(得分:1)

部分检查的时间输入掩码

<input type="text" id="timeinput" name="time" value="" onkeyup="validateTime(this);"/>
<span id="validationresult"></span>
<script>
function validateTime(el)
{
    var result;
    // first, check if input is fully correct
    if (el.value.match(/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/))
        result = "OK";
    // then, check if it is not wrong
    else if (el.value.match(/^([0-9]|0[0-9]|1[0-9]|2[0-3])?(:([0-5]|[0-5][0-9])?)?$/))
        result=""; // don't bother user with excess messages
    else
        result="Please, correct your input";
    document.getElementById("validationresult").innerHTML=result;
}
</script>

随意优化额外匹配,但在这里您可以看到两个表达式之间的区别。