只允许数字和减号

新手上路,请多包涵

我试图只在 input type="text" 中允许数字和减号。我只能允许数字,但不能允许减号。我尝试了以下正则表达式以仅允许数字:

 /\D/

当我添加减号时,它似乎不起作用:

 /-?\D/

(我有问号 (?) 的原因是因为不会总是有减号。)当我尝试向文本字段添加减号时,它不起作用。这是代码:

(我尝试添加一个代码片段,但无法正确编译。)

代码笔

<input id="num" type="text" />

var input = document.getElementById('num');
input.addEventListener("keypress", function(e) {
    var keycode = (e.keyCode ? e.keyCode : e.which);
    if (/-?\D/.test(String.fromCharCode(keycode))) { // a non–digit was entered
        e.preventDefault();
    }
});

原文由 Jessica 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 378
1 个回答

我建议使用此正则表达式来 匹配有效数字

 /^[+-]?\d+$/

并让您在 test 方法中反转逻辑,如下所示:

 var input = document.getElementById('num');
input.addEventListener("change", function(e) {
    if (!/^[+-]?\d+$/.test(this.value)) { // a non–digit was entered
    console.log("non-digit was entered");
    $('#num').val('');
    }
});

代码笔

原文由 anubhava 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题