正则表达式

2021-06-13  本文已影响0人  sweetBoy_9126
  1. 输入价格的时候最多输入两位小数并且不允许输入非数字
limitDecimals = (value) => {
    const reg = /^(\d+)\.(\d\d).*$/;
    if(typeof value === 'string') {
      // !isNaN(Number(value)) 用过不是纯数字的话,使用Number(str)就会返回isNaN,所以如果输入的是数字 !isNaN(Number(value)) 就是 true,走正则替换($1匹配满足第一个括号里的正则的内容),否则就直接置空
        return !isNaN(Number(value)) ? value.replace(reg, '$1.$2') : ''
    } else if (typeof value === 'number') {
        return !isNaN(value) ? String(value).replace(reg, '$1.$2') : ''
    } else {
        return ''
    }
  };

配合 antd InputNumber 组件用法,让 formatter 和 parser 都等于这个方法

<InputNumber
            placeholder="请输入市场价"
            value={item}
            allowClear
            min={0}
            max={99999}
            step={0.01}
            formatter={this.limitDecimals}
            parser={this.limitDecimals}
            onChange={e => this.props.handleSkuChange(e, 'marketPrice', index)}
          />
上一篇下一篇

猜你喜欢

热点阅读