在JS中只允许用户输入中的数字,逗号或点

时间:2015-11-28 10:15:03

标签: javascript regex

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

我决定使用JS替换功能来实现它。我的方法是用空字符串替换与集合不匹配的所有内容。

我已经整理了正则表达式以便很快匹配该集合,这里是:

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

我知道这可能并不理想,但是因为无论如何都有服务器端验证,所以它还算不错。

然而,无论我怎么努力,我都无法弄清楚如何用空字符串替换任何与此正则表达式不匹配的东西。

以下是我如何使用替换:

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

我可能做错了。即使功能非常简单,我也会好起来 - 只需替换任何非数字,而不是逗号而不是用空字符串替换。我在正则表达式中尝试过负面预测,但不幸的是我无法按照我的意愿使其工作。

1 个答案:

答案 0 :(得分:2)

看起来我用

计算出来了
/[^\d,.]/g

所以功能是

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

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

之前我试过这个正则表达式并且它不时表现得很奇怪但是我不确定问题出在正则表达式本身上。无论如何,欢迎任何关于方法或正则表达式的建议。