以VUE为例:
<el-input v-model="form.num" @keyup.native="enterValue"></el-input>
data(){
return{
form:{},
reg:'', // 小数位正则
}
},
mounted(){
this.regRule(3)
},
methods:{
// N位小数正则
regRule(num){
let lang='\\d'
for(let i=1;i<num;i++){
lang = lang + "\\d"
}
this.reg = '/^(\\-)*(\\d+)\\.('+ lang +').*$/'
},
enterValue(){
// 不能输入小数
this.form.num = this.form.num.replace(/^(0+)|[^\d]+/g,'')
// 保留两位小数
this.form.num = this.form.num.replace(/[^\d.]/g, '').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')
// 保留N位小数
this.form.num = this.form.num.replace(/[^\d.]/g, '').replace(eval(this.reg), '$1$2.$3')
}
}