【JS】使用JS正则式对前端文本框进行校验,此文本框与后台字段直接关联,类型为Oracle的number(12,2)
【要解决的问题】
前台有一输入框,直接与后台某表某字段关联,此字段是number(12,2)类型,要求前台用JS限制用户输入,直到其符合后台的数据格式。
【需求分析】
Oracle的Number(12,2),其小数位最多为两位,整数位最多为十位。对此存疑请参考:https://www.cnblogs.com/heyang78/p/15887408.html
据此写出的正则分整数部分和小数部分,整数部分限制在十位,小数部分限制为一到二位,且和小数点一起出现。
【正则】
^(\\d{1,10})([.]\\d{1,2})?$
【代码】
<!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <head> <title>Filename</title> </head> <body onload="run();"> </body> </html> <script type="text/javascript"> <!-- function run(){ var arr=[]; arr.push({'value':1,'expected':true,'reason':'限制在10位整数范围内','actual':true}); arr.push({'value':1.23,'expected':true,'reason':'限制在10位整数两位小数范围内','actual':true}); arr.push({'value':1234567890,'expected':true,'reason':'限制在10位整数范围内','actual':true}); arr.push({'value':12345678901,'expected':false,'reason':'越过了10位整数范围','actual':true}); arr.push({'value':0.123,'expected':false,'reason':'小数位超过了2位','actual':true}); arr.push({'value':1234567890.99,'expected':true,'reason':'整数位未超过10小数位未超过2','actual':true}); for (var i=0,n=arr.length;i<n ;i++ ){ var item=arr[i]; var result=isValid(item.value); item.actual=result; } for(var item of arr){ console.log("数%f%s%s,预期值%s,理由:%s,实际值%s;",item.value,item.actual?'符合':'不符合','number(12,2)格式',item.expected,item.reason,item.actual); } } //---------------------------------------------- // 后台字段定义是oracle的number(12,2) // 前台以此书写正则对输入进行验证 //---------------------------------------------- function isValid(text){ var reg='^(\\d{1,10})([.]\\d{1,2})?$'; var regExp=new RegExp(reg); return regExp.test(text); } //--> </script>
以上粗体部分为核心校验函数。
【运行结果】
数1符合number(12,2)格式,预期值true,理由:限制在10位整数范围内,实际值true;
数1.23符合number(12,2)格式,预期值true,理由:限制在10位整数两位小数范围内,实际值true;
数1234567890符合number(12,2)格式,预期值true,理由:限制在10位整数范围内,实际值true;
数12345678901不符合number(12,2)格式,预期值false,理由:越过了10位整数范围,实际值false;
数0.123不符合number(12,2)格式,预期值false,理由:小数位超过了2位,实际值false;
数1234567890.99符合number(12,2)格式,预期值true,理由:整数位未超过10小数位未超过2,实际值true;
END
分类:
JS.正则表达式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-02-12 使用Flashback救回被误drop掉的表
2020-02-12 【Canvas与艺术】环形回环边纹
2020-02-12 【高中数学/指数、对数、正弦函数】已知函数f(x)=2^x+x,g(x)=log2_x+x,h(x)=2*sinX+x 的零点分别是a,b,c,则a、b、c的大小顺序是?
2020-02-12 【高中数学/函数/零点】已知函数f(x)=lnx-x-a有两个不同的零点,求实数a的取值范围?
2020-02-12 【高中数学】比较两躺平点的大小关系