Javascript RegEx仅允许某些地方的某些字符

时间:2010-12-15 12:41:46

标签: javascript validation textbox

我想使用正则表达式“强制”用户正确格式化时间戳。

目前我可以限制输入,以便用户只能使用以下内容输入数字,短划线或冒号:

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)?

(如果它在字符串中的正确位置时自动添加了破折号,冒号和空格,那就更酷了。)

干杯,

4 个答案:

答案 0 :(得分:1)

使用jQuery validation plugin

由于您有自定义日期格式,我会指向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");
    }
}