用于jquery的AM PM时间格式的正则表达式

时间:2012-01-11 13:49:25

标签: javascript jquery regex

我对正则表达式屏蔽输入字段感到沮丧。我想限制输入为hh:mm AM | PM格式,我无法使这个正则表达式工作。

我将此正则表达式与www.ThimbleOpenSource.com中的jquery工具结合使用。它是filter_input.js工具或其他什么。

它似乎适用于简单的正则表达式,但我想出的那个似乎不起作用。这是我在下面的jsFiddle测试链接。

jsFiddle

6 个答案:

答案 0 :(得分:28)

我做了一个jsfiddle示例,基于答案von Yuri的正则表达式: http://jsfiddle.net/Evaqk/

$('#test1, #test2').blur(function(){
    var validTime = $(this).val().match(/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/);
    if (!validTime) {
        $(this).val('').focus().css('background', '#fdd');
    } else {
        $(this).css('background', 'transparent');
    }
});

答案 1 :(得分:2)

首先,如果你将它用于输入字段,你绝不应该让用户使用文本字段输入日期或时间信息,并希望它是严格格式的。

但是,如果你坚持:

/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/

此正则表达式将以AM / PM格式验证时间。

答案 2 :(得分:2)

你不能用那个插件做到这一点,因为你需要检查每个角色。

HTML:

<form>
    <p>When?</p>
        <input type="text" id="test1" placeholder="hh:mm(AM|PM)"/>
</form>

JavaScript的:

$("#test1").keypress(function(e) {
    var regex = ["[0-2]",
    "[0-4]",
    ":",
    "[0-6]",
    "[0-9]",
    "(A|P)",
    "M"],
    string = $(this).val() + String.fromCharCode(e.which),
    b = true;
    for (var i = 0; i < string.length; i++) {
        if (!new RegExp("^" + regex[i] + "$").test(string[i])) {
            b = false;
        }
    }
    return b;
});

Example

答案 3 :(得分:1)

所以我很确定现在已经解决了这个问题,但我最近在努力解决这个问题并且找不到足够快的答案。我正在使用Bootstrap Validator(由@nghuuphuoc的bootstrapvalidator.com)和Eonasdan的DateTimepicker来验证一小时(PS:你可以在Eonasdan的插件中禁用日期)。

由于Bootstrap Validator还没有时间验证器,您必须使用Regex。这个对我很有用:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9] [APap][mM]$

答案 4 :(得分:0)

follwing函数返回(true / false)值

    function CheckTime(HtmlInputElement) {
       var dt = HtmlInputElement.value;
       return (/(0?[1-9]|1[0-2]):[0-5][0-9] ?[APap][mM]$/.test(dt));
}

答案 5 :(得分:0)

也检查此解决方案。

<!DOCTYPE html>
<html>
<body>

<p>This demo used to validate time with 12 hours format</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
    var regexp = /^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/;
    var res = regexp.test('12:00 AM'); //try with alphabets or wrong format
    document.getElementById("demo").innerHTML = res;
}
</script>

</body>
</html>