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

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

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

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

的jsfiddle

我已经做了一个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'); } }); 

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

但是,如果你坚持:

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

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

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

HTML:

 

When?

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; }); 

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

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

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

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)); } 

检查这个解决方案。

    

This demo used to validate time with 12 hours format