我尝试仅允许输入[0-9]
,.
和,
,因为我只希望用户能够输入带分隔符和不带分隔符的数字。这些是我想要允许的测试:
1000 == 1.000,00
1000 == 1,000.00
1000 == 1.000
1000 == 1,000
1000 == 1000
用户如何键入这些内容完全取决于他们以及他们通常做什么。我想检查用户输入的内容是否等于1000
。
https://jsfiddle.net/m2pq06b1/
最好的方法是什么?我需要上面的所有案例都是真的。
答案 0 :(得分:2)
来自评论:
如果你在分隔符后键入三个数字,这很常见,这意味着 千。这很常见。当你只输入两个时,它一般 是指整数的百分之一或百分之一(基本上是1-99)。
基于此,我提出以下解决方案:
,
和.
)替换为正好两位数字,并将字符串末尾替换为小数点。parseFloat()
将已清理的值解析为数字。
var values = ["1.000,00", "1,000.00", "1.000", "1,000","1000"];
values.forEach(value => {
let sanitized = value.replace(/[.,](?=\d{2}$)/g, '.').replace(/[.,](?!\d{2}$)/g, '');
let number = parseFloat(sanitized);
console.log(number == 1000);
});