正则限制金额(小数2位多了输入不进去,总长度大于18之后输入不进去)
<el-input
@keyup.native="
ruleForm.totalAmount = oninput(ruleForm.totalAmount, 2)
"
v-model="ruleForm.totalAmount"
maxlength="50"
placeholder="请输入阿拉伯数字或小数"
class="newWidth"
></el-input>
export function oninput(val, limit = 0) {
val = val.replace(/[^\d.]/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 maxLength = 18
const limit2 = maxLength - limit
const str = "^(\\d{" + limit2 + ")\\.(\\d{" + limit + "}).*$";
const reg = new RegExp(str);
if (limit === 0) {
// 不需要小数点
val = val.replace(reg, "$1");
} else {
// 通过正则保留小数点后指定的位数
val = val.replace(reg, "$1.$2");
}
return val;
}
版权声明:本文由Web学习之路发布,如需转载请注明出处。