2

我上面有一个 JavaScript 正则表达式函数代码:

function AcceptDigits(objtextbox) {
    var exp = /[^\d{1,3}]/g;
    objtextbox.value = objtextbox.value.replace(exp, '');
}; 

总是我写一个任何特殊字符,函数删除这个字符例如:

我写了 45656654@,这个函数像 45656654 一样清理“@”。

我的问题

问题是,当我写任何“,”(逗号)该函数不起作用时,我尝试“.-()/&%$#”并且该函数起作用。

任何帮助捕捉和删除逗号?

4

2 回答 2

9
/[^\d{1,3}]/g

表示“既不是数字、大括号也不是逗号的单个字符”。

你可能是说

/\D{1,3}/g

但实际上,如果您想使用该正则表达式来替换非数字,只需使用

/\D+/g
于 2013-05-21T15:10:03.443 回答
3

解释为什么逗号不起作用:

在方括号(字符集)中,大多数符号没有特殊效果,除了集合开头的]and\和和,表示补码。^所以

[^\d{1,3}]

表示任何不是数字也不是{, 1, ,, 3,}的字符(1并且3, 在这里是多余的信息)。

进一步解释: \d表示任何数字,\D表示数字的补充(除数字之外的所有内容),[]表示字符集。由于两者\d\D已经设置,因此无需将它们放入方括号中,并且与 .[^\d]相同\D

因此,要匹配除 1-3 个数字集之外的所有内容,您可以写\D{1,3}[^\d]{1,3}。换句话说,将大括号放在方括号后面。


另一个答案中的 Tim Pietzckler 显示了您应该做什么。

于 2013-05-21T15:19:20.780 回答