JS正则验证数字格式2
之前的博文: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的更多相关文章
- js正则验证数字的方法
正则验证数字的方法: <script type="text/javascript"> function validate(){ var reg = new RegExp ...
- js正则验证邮箱格式
首先总结一下邮箱的格式,邮箱由@分隔,左侧为用户名,右侧为邮箱域名,用户名可以由字母.数字._.-以及.组成,但是必须是以字母或数字开头,邮箱的域名是由字母.数字.-和.组成的,但是必须以.加上字母的 ...
- 正则表达式控制Input输入内容 ,js正则验证方法大全
https://blog.csdn.net/xushichang/article/details/4041507 //输入姓名的正则校验 e.currentTarget.value = e.curre ...
- 手机号码js正则验证
手机号码js正则验证 var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; if (!myreg.test($(" ...
- js中的数字格式变成货币类型的格式
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- js正则验证特殊字符
js正则验证特殊字符 方案一 var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im, regCn = /[·!#¥(--):: ...
- js正则验证
/判断输入内容是否为空 function IsNull(){ var str = document.getElementById('str').value.trim(); ...
- JS正则表达式验证数字
<script type="text/javascript"> function validate(){ var reg = new RegExp("^[0- ...
- JS正则表达式验证数字(很全)
1.<script type="text/javascript"> 2. function validate(){ 3. var reg = new ...
随机推荐
- 求序列A中每个数的左边比它小的数的个数(树状数组)
给定一个有N个正整数的序列A(N<=10^5,A[i]<=10^5),对序列中的每一个数,求出序列中它左边比它小的数的个数. 思路:树状数组的经典应用(裸题) #include <i ...
- Tomcat 部署多个web项目
1.若Tomcat的端口设置为10000,则http://localhost:10000访问的目录是 webapps 2.Service.xml中host内配置Context标签,path+docba ...
- piplinedb 团队加入confluen
这个消息对于使用pipelinedb 的人来说,可能有点不好,因为官方已经明确说明了,pipelinedb 截止到1.0 版本,将不再维护了, 基本就要靠社区了,但是pipelinedb 团队还是比较 ...
- C语言定义结构体指针数组并初始化;里面全是结构体的地址
#include <stdio.h> #include <string.h> struct tells;//声明结构体 struct info { char *infos; } ...
- Node.js 自学之旅(初稿篇)
学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里 ...
- Ultra Edit中的数据对齐
有时会用到Ultra Edit的数据对齐功能.比如,要求64个符号一组,从低位开始对齐.这时,如果数据长度不是一行长度的整数, 就会产生高位对齐.低位不足的问题.为了调整,往往需要逐行调整,很不方便. ...
- 2019暑期金华集训 Day6 计算几何
自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...
- Gin-Go学习
笔记一:Hello World https://www.cnblogs.com/tudaogaoyang/p/8056186.html 笔记二:Gin-Web框架 https://www.cnblog ...
- 使用composer下载依赖包下载失败的解决方法
下载好的composer默认的下载地址是国外的,在下载的过程中网络不好或者可能被墙,将下载的地址换成国内的地址即可 有两种方式启用本镜像服务: 系统全局配置: 即将配置信息添加到 Composer 的 ...
- 批量转换word为pdf
自己写的一个小工具,用于批量转换word为pdf,使用方式: 将完整代码拷贝到文档中,并修改名称为words2pdfs.py将该文件拷贝到需要转换的文档目录下在终端中输入python words2pd ...