0

我试图只过滤数字和-. 每当用户输入任何不是数字且不是连字符/破折号的内容时,都应将其删除。我有正则表达式[0-9\-],但它不起作用。我知道这是错误的,但我对此真的很陌生。

请参阅http://jsfiddle.net/nqdjZ/

请帮忙。

4

3 回答 3

2

首先,new RegExp期望一个字符串;您应该改用文字/[0-9-]/。下一个问题是它replace甚至不应该存在。另一个问题是,您永远无法完全确定文本的输入位置——不要假设它在末尾。这会严重惹恼人们。

使用 an<input type="number">代替,并在最后验证而不是在有人打字时验证。

于 2013-01-08T04:50:59.893 回答
1

试试这个正则表达式:

[^\d\-]+

并用空字符串替换。

解释:

[^character_group] 否定:匹配任何不在character_group.

\d 匹配任何十进制数字。

+ 匹配前一个元素一次或多次。

\- 火柴-

和你的代码:

result = inputString.replace(/[^\d\-]+/g, "");
于 2013-01-08T05:04:02.140 回答
1

更改正则表达式 -

var pattern = new RegExp("^([0-9_\\-]+)$");
于 2013-01-08T05:11:19.817 回答