【发布时间】:2019-12-02 18:30:15
【问题描述】:
我试图只在input type="text" 中允许数字和减号。我只能允许数字,但我不能允许减号。我尝试了以下正则表达式以仅允许数字:
/\D/
当我添加减号时,它似乎不起作用:
/-?\D/
(我有问号 (?) 的原因是因为不会总是有减号。)当我尝试在文本字段中添加减号时,它不起作用。代码如下:
(我尝试添加代码 sn-p,但编译不正确。)
<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();
}
});
【问题讨论】:
-
\D表示任何但数字。用它来允许only个数字是没有意义的。 -
你想要这个:
/-?\d+/ -
我笑得很厉害,@Jessica。似乎没有人明白你的真正意思是 \D,因为你的代码 disallows 一切都是 not a number 从字面上看,没有人关心阅读下面的行,也没有人关心你的 //comment .
-
使用字符类:/[0-9\-]/ 只允许数字和数字,/[^0-9\-]/ 用于逆
-
@KiraCrafter
-字符可能不需要在类中转义
标签: javascript regex