JS中的用户输入中只允许使用数字、逗号或句点

Allow only digit, comma or dot in the user input in JS

本文关键字:句点 数字 用户 输入 JS 许使用      更新时间:2023-09-26

我有一个用户输入,其中只允许使用特定的字符集。也就是说,用户应该只能输入一个数字,可能带有浮点。用户可以使用逗号或句点作为分隔符。

我决定使用JS替换函数来实现这一点。我的方法是用空字符串替换所有与集合不匹配的内容。

我很快就整理出了正则表达式来匹配集合,它是:

^'d+[,.]{0,1}'d+$

我知道这可能不太理想,但这很好,因为无论如何都有服务器端验证。

然而,无论我怎么努力,我都无法找出如何用空字符串替换任何与此正则表达式不匹配的内容。

以下是我如何使用replace:

var cleanInputOut = function (element) {
    element.value = element.value.replace(/<RegEx goes here>/g, '')
}

我可能做错了。即使使用非常简单的功能,我也可以——只需用空字符串替换任何非数字,而不是逗号和句点。我在regex中尝试过负前瞻,但不幸的是,我无法使它按我想要的方式工作。

看起来我是用解决的

/[^'d,.]/g

所以功能是

 var cleanInputOut = function (element) {
     element.value = element.value.replace(/[^'d,.]/g, '')
 }

我真的不明白为什么^字符同时用于标记否定集和行的开头,但它似乎起作用了。

我以前尝试过这个正则表达式,它有时表现得很奇怪,但我不确定问题出在正则表达式本身。无论如何,欢迎对该方法或正则表达式提出任何建议。