<el-input v-model="serviceAmount" @input="clearNoNum(serviceAmount)"/>
const clearNoNum = (val) => {
serviceAmount.value = val
.replace(/(\.\d\d)\d*/, '$1') //保留两位小数
.replace(/[^\d.]/g, '') // 清除"数字和."以外的字符
.replace(/^\./g, '') // 验证第一个字符是数字
.replace(/\.{2,}/g, '.') //只保留第一个. 清除多余的
}
补充:如果是限制只能输入一位小数将 .replace(/(\.\d\d)\d*/, '$1')换成 .replace(/^(-)*(\d+)\.(\d).*$/, '$1$2.$3') 即可。
const clearNoNum = (val) => {
subForm.value.serviceAmount = val
.replace(/^(-)*(\d+)\.(\d).*$/, '$1$2.$3') // 保留一位小数
.replace(/[^\d.]/g, '') // 清除"数字和."以外的字符
.replace(/^\./g, '') // 验证第一个字符是数字
.replace(/\.{2,}/g, '.') //只保留第一个. 清除多余的
}