将带/不带分隔符的输入数转换为整数

时间:2017-02-14 09:09:18

标签: javascript formatting numbers

我尝试仅允许输入[0-9].,,因为我只希望用户能够输入带分隔符和不带分隔符的数字。这些是我想要允许的测试:

1000 == 1.000,00
1000 == 1,000.00
1000 == 1.000
1000 == 1,000
1000 == 1000

用户如何键入这些内容完全取决于他们以及他们通常做什么。我想检查用户输入的内容是否等于1000

https://jsfiddle.net/m2pq06b1/

最好的方法是什么?我需要上面的所有案例都是真的。

1 个答案:

答案 0 :(得分:2)

来自评论:

  

如果你在分隔符后键入三个数字,这很常见,这意味着   千。这很常见。当你只输入两个时,它一般   是指整数的百分之一或百分之一(基本上是1-99)。

基于此,我提出以下解决方案:

  1. 将所有分隔符(,.)替换为正好两位数字,并将字符串末尾替换为小数点。
  2. 删除所有分隔符后面没有正好两位数字和字符串的结尾。
  3. 使用parseFloat()将已清理的值解析为数字。
  4. 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);
    });