我在我的网站上有一个输入,允许人们把他们的时间放在一起,并希望它是一个秒表式的格式。
这是我到目前为止所拥有的: https://jsfiddle.net/k4q3x0hd/3/
$('.time_score').keydown(function(event) {
// skip for arrow keys
if(event.which >= 37 && event.which <= 40) return;
// format number
$(this).val(function(index, value) {
return value.replace(/\D/g, "").replace(/\B(?=(\d{2})+(?!\d))/g, ":");
});
});
我需要它做的是说明如果有人投入60(秒),它自动格式化为00:60:00。
有什么方法可以格式化它以允许它自动添加00在60之前和之后但仍保留用户输入完整min:sec:mil时间设置的能力。
我是正则表达式的新手并试图弄清楚,如果这是一个简单的修复,请原谅我。
添加了更多详细信息:
用户将输入体育赛事的活动时间,输入格式为00:00:00(最小值:秒数:毫秒数)。如果用户在60秒内完成一个事件,那么得分者只需输入60而不是00:60:00,我想找到一种检查条目的方法,这样如果他们放了一半就会纠正它以添加00:in前面或弹出一条解释正确格式的信息
答案 0 :(得分:1)
如果您真的想使用正则表达式,请尝试以下方法:^(?:\d{2}:){2}\d{2}$
。从技术上讲,你也可以使用^(?:\d\d:){2}\d\d$
,我猜这实际上是2个字符。两者都完成了同样的事情:只有&#34; 00:00:00&#34;应该最终匹配,所以如果你串起来不那么你可以用00:{user value}:00替换它。
Javascript可以快速测试正则表达式的字符串:/regex/.test(string)
。
如此完整:
var regex = /^(?:\d{2}:){2}\d{2}$/;
$(".time_score").blur(function() {
var value = $(this).val();
if (!regex.test(value)) {
$(this).val("00:" + value + ":00");
}
});
这是一个更新的工作示例:https://jsfiddle.net/k4q3x0hd/16/
从你的代码中,我将其更改为模糊,只是为了防止每次有人输入内容时(就像你的keydown一样)。