我想使用正则表达式“强制”用户正确格式化时间戳。
目前我可以限制输入,以便用户只能使用以下内容输入数字,短划线或冒号:
function allownumbers(e) {
var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
var reg = new RegExp("[-0-9: ]")
if (key == 8) {
keychar = String.fromCharCode(key);
}
if (key == 13) {
key = 8;
keychar = String.fromCharCode(key);
}
return reg.test(keychar);
}
但是,用户仍然可以输入无效数据,例如0000 :: - 12354将验证。
我可以使用正则表达式强制用户输入#### - ## - ## ##:##:##(例如2010-12-15 10:57:01)?
(如果它在字符串中的正确位置时自动添加了破折号,冒号和空格,那就更酷了。)
干杯,
本
答案 0 :(得分:1)
由于您有自定义日期格式,我会指向this SO post。
如果您想在输入过程中强制使用某种模式,请查看masked input plugin。
答案 1 :(得分:0)
你的正则表达式可以是
var re = /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/;
答案 2 :(得分:0)
您可以轻松完成此操作 - 只需使用{}来限制条目数量。作为一个相当粗略的例子,正则表达式:[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}
将做你想要的,只是根据文本框的整个内容进行测试 - 例如reg.match(e.srcElement.value)。
如果您希望在进行测试时,可以使用this site中的代码来确定光标位置,然后根据您在该位置的预期检查新输入,是的,甚至可以自动添加短划线或空格。
答案 3 :(得分:0)
为什么不使用一小块验证?他们进入弦后......
var date = new Date(dtStr);
if (isNaN(date) && dtStr != "MM/DD/YYYY") {
return alert('Please enter a valid date');
}
else {
if (date.getFullYear() > 2100 || date.getFullYear() < 1900) {
return alert("Please enter a valid year");
}
}