使用正则表达式

时间:2015-09-01 12:25:32

标签: javascript regex

在使用Javascript时,我对前端的产品编号进行了限制。 产品编号应为xxxxx 5位数字或xxx-xxx样式6位数。

我计划将每个按键的非正确文本字符替换为“” 并在此前面调用onkeypress = "checkonlynumdash();"

对于该函数,我的代码如下所示。

function checkonlynumdash() {
        e = window.event;
        var keypress = String.fromCharCode(e.keycode);
        var numdashkey = "";
        numdashkey = /^[-]|[^0-9-]/;
        return numkey.test(keypress);
}

在使用window.event时,我试图控制实时按键,但它 似乎不适合替换。希望有人能指出缺失的部分。

2 个答案:

答案 0 :(得分:1)

我看到两个问题:

e.keycode

我会改为

 e.charCode

并使用另一个正则表达式:/[\d-]/,它更简单。 结果可能是:

function checkonlynumdash() {
        e = window.event;
        var keypress = String.fromCharCode(e.charCode);
        var numdashkey = /[\d-]/;
        return numdashkey.test(keypress);
    }

此外,我无法理解您的原始正则表达式:/^[-]|[^0-9-]/符号^表示字符串开头的''或者'不是'。

答案 1 :(得分:-1)

你可以尝试Simple Mask,它是jQuery插件,可以在输入字段上制作掩码。 用法:

$('input').simpleMask({
  'mask': ['####-####','#####-####']
});

Demo