为什么我的正则表达式让我写& &;(逗号)

Why my Regex let me write "," (Comma)?

本文关键字:逗号 我的 正则表达式 为什么      更新时间:2023-09-26

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

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

每当我写一个特殊的字符,函数就会删除这个字符,例如:

我写45656654@,这个函数清理"@"像45656654。

我的问题

问题是,当我写任何","(逗号)函数不起作用时,我尝试"。-()/&%$#"和函数工作。

有什么帮助来捕捉和删除逗号吗?

/[^'d{1,3}]/g

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

你可能是指

/'D{1,3}/g

但实际上,如果你想用那个正则表达式来替换非数字,就用

/'D+/g

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

在方括号(字符集)中,除了字符集开头的]'^外,大多数符号都没有特殊效果。因此

[^'d{1,3}]

表示不是数字的字符,也不是{, 1, ,, 3, } (13,这里是多余的信息)。

进一步解释: 'd表示任何数字,'D表示数字的补充(除了数字),[]表示字符集。由于'd'D都已设置,因此不需要将它们放入方括号中,[^'d]'D相同。

因此,为了匹配除了1-3个数字之外的所有内容,您可以写'D{1,3}[^'d]{1,3}。也就是说,把花括号放在方括号后面。


Tim Pietzckler在另一个答案中告诉你应该怎么做