正则表达式
2021-06-13 本文已影响0人
sweetBoy_9126
- 输入价格的时候最多输入两位小数并且不允许输入非数字
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)}
/>