我上面有一个JavaScript正则表达式函数代码:
function AcceptDigits(objtextbox) {
var exp = /[^\d{1,3}]/g;
objtextbox.value = objtextbox.value.replace(exp, '');
};
总是我写一个任何特殊字符的函数删除这个字符为例:
我写了45656654 @并且这个函数像45656654那样清理“@”。
我的问题
问题是,当我写任何“,”(逗号)函数不起作用时,我尝试“.-()/&%$#”并且函数工作。
有关捕获和删除逗号的任何帮助吗?
答案 0 :(得分:9)
/[^\d{1,3}]/g
表示“单个字符既不是数字,也不是大括号,也不是逗号”。
你可能意味着
/\D{1,3}/g
但实际上,如果您想使用该正则表达式替换非数字,请使用
/\D+/g
答案 1 :(得分:3)
解释为什么逗号不起作用:
在方括号(字符集)中,除了设置开头的]
和\
以及^
外,大多数符号都没有特殊效果,这意味着补码。因此
[^\d{1,3}]
表示任何非数字的字符,{
,1
,,
,3
,}
({{ 1}}和1
,这里是冗余信息。)
进一步说明: 3
表示任何数字,\d
表示数字的补码(除数字外的所有内容),\D
表示字符集。由于[]
和\d
都已设置,因此无需将它们放入方括号中,\D
与[^\d]
相同。
因此,为了匹配除1-3个数字集之外的所有内容,您可以编写\D
或\D{1,3}
。换句话说,将大括号放在方括号后面。
Tim Pietzckler在另一个答案中展示了你应该做的事情。