<template>
<view class="uni-form-item uni-column">
<view >数量/年</view>
<input type="number" class="uni-input" v-model='form.number'
name="number" placeholder="请输入数量/年" @keyup.native="form.number = oninput(form.number,2)"/>
</view>
</template>
<script>
export default {
data() {
return {
form: {number: ''}
}
},
methods: {
oninput(val, limit = 0) {
val = val.replace(/[^\d.]/g, ""); //保留数字
//val = val.replace(/[^\0-9\u4e00-\u9fe5.]/g, ""); //保留数字汉字
val = val.replace(/^00/, "0."); //开头不能有两个0
val = val.replace(/^\./g, "0."); //开头为小数点转换为0.
val = val.replace(/\.{2,}/g, "."); //两个以上的小数点转换成一个
val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); //只保留一个小数点
/^0\d+/.test(val) ? val = val.slice(1) : ''; //两位以上数字开头不能为0
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
const reg = new RegExp(str)
if (limit === 0) {
// 不需要小数点
val = val.replace(reg, '$1')
} else {
// 通过正则保留小数点后指定的位数
val = val.replace(reg, '$1.$2')
}
return val
}
}
}
</script>