之前的博文:JS验证正数字,正则的一种正数规则1,中isNaN可以判断内容是否为数字,但是这种判断出来的数字,有的不是数字的标准格式。那篇博文中尝试了下用正则验证,但是忘了一种情况,小数点后无数字,小数点后跟着的内容应该是+一个或多个,而不是*零个一个或多个,小数点后无数字不符合要求。
而且测试的几种情况把0忘了,0后面紧跟着小数点,但是还有单独的0也算是数字。
写了几个数字组成应该匹配到的,和不该匹配到的情况,并根据测试情况逐步修改。

个人目前想到的情况:
应该匹配到的情况:
0(一位0)
5(一位数
7068404(一位或多位正整数)
-23403(负数开头的正整数)
0.3504(零和点开头的小数)
405.3803(不是零开头的小数)
不该匹配到的情况
09456(零开头的第二位不是点的数)
-0345(负号后面紧跟着零,零的第二位不是点的数)
3403.(点后面没有数字跟着)
a345.46d(前后有非数字)
0..456(有多个小数点)
-0(负的单独的0似乎也没有意义)

修改版本1:
如图,是修改后的表达式,负号可以有零个或一个,后面的分了两种情况:
1.以非零开头,1-9开头,后面可跟着任意数量数字,然后跟着一个点(零个或一个),后面再跟着任意数字。
匹配非零开头的整数和小数
2.以零开头,后面紧跟着小数点(一个或零个),后面跟着任意数字(一个或多个,不能没有)。

相比于前一个博文,加的内容:
(1)第一位可以是负号(零个或一个)
(2)两种情况的点后面有数字(一个或多个)

测试结果:
这种情况在上面列出的中有两种情况匹配不到,数字0和数字5,
根据 表达式,让小数点后必须跟着至少一位数字,而小数点是一个或零个,可有可无,所以造成了无法匹配到一位数字的情况。
小数点可有可无,第一位是1-9中的一个,第二位是0-9一个或多个,这样就限制了第一种情况至少两位数字。
且表达式限制了0后面必须紧跟着小数点,所以也匹配不到0。

修改版本2(目前最终版):
分情况:
1.分了四种情况,都用括号括起来,并用|或分割,修改版本2里的两种情况,再加上0和单正负个位数,共四种情况 。
所有的括号括起来,
测试结果:
上面列出的这些应该匹配到的,和不该匹配到的都正常了。

由于写正则需要考虑到各种情况,该文上面的列出的几种情况匹配到了,不排除有其他情况。

测试代码:(这是修改版本2的)

       console.log("----------应该匹配到的----------");
console.log("0,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("0"));
console.log("5,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("5"));
console.log("7068404,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("7068404"));
console.log("-23403,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("-23403"));
console.log("0.3504,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("0.3504"));
console.log("405.3803,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("405.3803"));
console.log("----------不该匹配到的----------");
console.log("09456,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("09456"));
console.log("-0345,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("-0345"));
console.log("3403.,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("3403."));
console.log("a345.46d,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("a345.46d"));
console.log("0..456,结果:"+/^((-?[1-9])|0|(-?[1-9]\d*\.?\d+)|(0\.\d+))$/.test("0..456"));

图示:

JS正则验证数字格式2的更多相关文章

  1. js正则验证数字的方法

    正则验证数字的方法: <script type="text/javascript"> function validate(){ var reg = new RegExp ...

  2. js正则验证邮箱格式

    首先总结一下邮箱的格式,邮箱由@分隔,左侧为用户名,右侧为邮箱域名,用户名可以由字母.数字._.-以及.组成,但是必须是以字母或数字开头,邮箱的域名是由字母.数字.-和.组成的,但是必须以.加上字母的 ...

  3. 正则表达式控制Input输入内容 ,js正则验证方法大全

    https://blog.csdn.net/xushichang/article/details/4041507 //输入姓名的正则校验 e.currentTarget.value = e.curre ...

  4. 手机号码js正则验证

    手机号码js正则验证 var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; if (!myreg.test($(" ...

  5. js中的数字格式变成货币类型的格式

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  6. js正则验证特殊字符

    js正则验证特殊字符 方案一 var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im, regCn = /[·!#¥(--):: ...

  7. js正则验证

    /判断输入内容是否为空    function IsNull(){        var str = document.getElementById('str').value.trim();      ...

  8. JS正则表达式验证数字

    <script type="text/javascript"> function validate(){ var reg = new RegExp("^[0- ...

  9. JS正则表达式验证数字(很全)

    1.<script type="text/javascript"> 2.     function validate(){ 3.       var reg = new ...

随机推荐

  1. kafka的HA机制

    1.kafka的HA机制:副本机制+消息同步+leader选举. 每个topic有多个partition,每个partition又有多个副本,这些副本当中也存在不同的角色,leader.followe ...

  2. 基于Python3+Requests的贴吧签到助手

    因为总是忘记签到,所以尝试写了一个签到脚本,因为使用的是Python3,所以没法使用Urllib2,于是选择了Requests,事实证明,Requests比Urllib2好用.整体思路比较简单,就是模 ...

  3. HTML中的标签列表

    1 :基础标签 <!DOCTYPE> :定义文档类型 <title>:定义文档标题 <h1>to<h2>定义HTML标题,其中h1到h6表示字体大小依次 ...

  4. P3293 [SCOI2016]美味 主席树+按位贪心

    给定长度为 \(n\) 序列 \(a[i]\) ,每次询问区间 \([l,r]\) ,并给定 \(b,x\) 中的一个数 \(p=a[i]\) ,使得最大化 \(b \bigoplus p^x\) 主 ...

  5. html5 打开摄像头

    <video onloadedmetadata="" id="inputVideo" style="width: 1080px;height: ...

  6. web大文件分块上传断点续传demo

    一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...

  7. webuploader+web如何实现分片+断点续传

    众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...

  8. C语言中一个字符对应一个ascii码;占一个1个字节8个二进制位;存到内存中也是用ascii的十进制的二进制表示

    /** 只读变量和常量 const 只读 const int a; int const a;//同上面的代码行是等价的,都表示一个常整形数. int *const a;//const具有"左 ...

  9. 洛谷 P1102 A-B数对 题解

    P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...

  10. Hadoop 副本放置策略的源码阅读和设置

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/hadoop_block_placement_policy 大多数 ...