js的小数位数和保留小数点四位数字等验证
经常自己用到的
一 查找小数点的下标
price = price + ''; // 数字转字符串或者tostring() var priceIndex = price.indexOf(".") + 1; // 小数位置 var priceCount = price.length - priceIndex; // 获取小数点后的位数 console.log(priceCount ); // 这个就是 // 判断是不是大于4位小数 if(priceCount > 4){ console.log("小数点位数大于4") }else{ console.log("小数点位数不大于4") }
二 小数点的验证
html部分:
<!--保留小数点2位--> <input type='text' value='' onkeyup='checkingNumber(this,2)'>
js部分:
// 小数验证 function checkingNumber(obj,num) { obj.value = obj.value.replace(/[^\d.]/g,""); // 清除"数字"和"."以外的字符 obj.value = obj.value.replace(/^\./g,""); // 验证第一个字符是数字 obj.value = obj.value.replace(/\.{2,}/g,"."); // 只保留第一个, 清除多余的 obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$","."); if (num == 0){ obj.value = obj.value.replace(/^0(0+)|[^\d]+/g,'');// 只能整数 } if (num == 1){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d).*$/,'$1$2.$3'); // 只能输入1个小数 } if (num == 2){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); // 只能输入2个小数 } if (num == 3){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3'); // 只能输入3个小数 } if (num == 4){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3'); // 只能输入4个小数 } if (num == 5){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d\d).*$/,'$1$2.$3'); // 只能输入5个小数 } if (num == 6){ obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d).*$/,'$1$2.$3'); // 只能输入6个小数 } if(obj.value.indexOf(".") < 0 && obj.value !=""){// 此处控制的是以上如果没有小数点,首位不能为类似于 01、02的数值 obj.value = parseFloat(obj.value); } obj.value = isNaN(obj.value) ? 0 : obj.value; // 不让显示NAN }
总结优化
// 小数验证 function checkingNumber(obj,n) { obj.value = obj.value.replace(/[^\d.]/g,""); // 清除"数字"和"."以外的字符 obj.value = obj.value.replace(/^\./g,""); // 验证第一个字符是数字 obj.value = obj.value.replace(/\.{2,}/g,"."); // 只保留第一个, 清除多余的 obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$","."); if (num == 0){ obj.value = obj.value.replace(/^0(0+)|[^\d]+/g,'');// 只能整数 }else{ // 保存n个小数 obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{n}).*$/,'$1$2.$3'); // 只能输入n个小数 } if(obj.value.indexOf(".") < 0 && obj.value !=""){// 此处控制的是以上如果没有小数点,首位不能为类似于 01、02的数值 obj.value = parseFloat(obj.value); } obj.value = isNaN(obj.value) ? 0 : obj.value; // 不让显示NAN }
三 标签里直接
<!--小数点后只能输4位--> <el-input :disabled="disabled" @input="scope.row.count=scope.row.count.replace(/^(\-)*(\d+)\.(\d{5}).*$/, '$1$2.$3')" v-model="scope.row.count" ></el-input>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通