我对正则表达式屏蔽输入字段感到沮丧。我想限制输入为hh:mm AM | PM格式,我无法使这个正则表达式工作。
我将此正则表达式与www.ThimbleOpenSource.com
中的jquery工具结合使用。它是filter_input.js工具或其他什么。
它似乎适用于简单的正则表达式,但我想出的那个似乎不起作用。这是我在下面的jsFiddle测试链接。
答案 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;
});
答案 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>