【问题标题】:How format currency with javascript and validate如何使用 javascript 格式化货币并进行验证
【发布时间】:2019-06-26 09:54:38
【问题描述】:

我正在使用 react 并且不想格式化和验证输入值。

我的用例是:

1- 输入将允许仅写入数字和点 [.] 2- 值最大为 1000 3-如果用户会写例如:

如果 200 将是 200.00

如果 99 将是 99.00

如果 10000 它将是 1000.00

如果 22222 它将是 222.22

我需要防止写两个点,只需要一个点并且在最后一个值之前。

我尝试什么?

onKeyPress 功能:

onKeyPress={e => {
            const BIRTHNUMBER_ALLOWED_CHARS_REGEXP = /^[0-9.]*$/;
            if (!BIRTHNUMBER_ALLOWED_CHARS_REGEXP.test(e.key)) {

              e.preventDefault();
            }
          }}

通过这种方式,我可以防止除点和数字之外的任何字符。但是对于另一个用例,我不知道如何弄清楚

【问题讨论】:

    标签: javascript regex reactjs


    【解决方案1】:

    最好将验证委托给特定的库,例如 Yup 或其他一些库。

    您的问题可以分为两个问题:验证和格式化。

    您可以轻松验证字符串是否为浮点数。浮点数只包含数字和一个点(最多一个)。

    const isAFloat = str => str.split('').filter(char => char !== '.').every(char => !Number.isNaN(parseInt(char))) && 
    str.indexOf('.') === str.lastIndexOf('.')
    

    格式化你可以做的浮点数,这会给你你想要的格式

    parseFloat(str,10).toFixed(2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      相关资源
      最近更新 更多