小数点后保留2位小数的正则表达式

一、前提

  整数和小数,保留两位小数的正则表达式:

  具体什么意思呢 

 ^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$

二、知识点

  1、首先从写法上可以看出,使用了显式定义正则表达式的语法,因为其中存在对字符串"\"(反斜杠)的转义

     2、正则表达式的定义共有2种方式:显示定义隐式定义

  

1 /*\d是正则表达式中的元字符,用于匹配数字,相当于[0-9],所以[0-9]也可以写成\d*/
2 var myregex = new RegExp("[0-9]");    //显式定义
3 var myregex = /[0-9]/;    //隐式定义

  3、何谓定位符?即限定某些字符出现的位置。

     
  说明:^表示必须以什么字符开头;$表示必须以什么字符结尾。

  
4、何谓限定符?即限定某个字符或某类字符出现的次数。

       说明:
       
 * 表示重复0次或更多次(任意次数);
        ?表示重复0次或1次(最多1次);
        {n}表示重复n次;
        {n,m}表示重复n-m次;

  
5、何谓分组?分组又称为子表达式,即把一个正则表达式的全部或部分分成一个或多个组。

      
 语法:分组使用的字符为“(”和“)”,即左括号和右括号。每一个子表达式都可以当做一个整体来处理。

三、拆分

  

1 //第一步:先分组,不管定位符和限定符。总共可分为两大组。
2 (([1-9]{1}\d*)|([0]{1}))//第一大组:整数部分
3 (\.(\d){0,2})//第二大组:小数部分

 

四、分析第一大组

  

1 //第二步:继续分组,将第一大组(整数部分)继续拆分,可分为3部分。
2 ([1-9]{1}\d*)//第一部分
3 | //第二部分
4 ([0]{1})//第三部分

  1、[...]是正则表达式中的元字符它会匹配方括号中的所有字符。 
       2、|是正则表达式中的选择符。简单来说就是:用于二选一即选择2个选项之中的任意一个,选他或选她。

  3、整数部分的两种情况:首位是0和首位不是0。即0.1213.145.21

  4、第一部分中的内容,即第一种情况,首位不为0:([1-9]{1}\d*)
          可以看出,第一部分由两个模块组成,即[1-9]{1}和\d*。
        (1)[1-9]{1}表示1-9之间的数字只出现一次,即保证了该数的首位不是0,总之是大于0的数。
        (2)\d*表示0-9之间的数字可以出现任意次,即0次或更多次。出现0次说明是一位整数。出现更多次就是多位整数。

  5、第三部分中的内容,即第二种情况,首位为0([0]{1})【一个字符没必要使用[元字符,直接写0就行,即(0{1}) 

    表示数字0只能出现一次,即首位只能是0,而且只能有一个0

  第一大组匹配了整数部分的情况,大于0的数还是小于1的数

五、分析第二大组

  

1 (\.(\d){0,2})//第二大组:小数部分
2 //第三步:继续分组,将第二大组(小数部分)继续拆分,可分为3部分。
3 \.      //第一部分
4 (\d)    //第二部分
5 {0,2}   //第三部分

  1、.(点)是正则表达式中的元字符它会匹配除了换行符以外的任意字符

  2、由于.(点)是元字符,所以,如果想要匹配字面意义上的点时(此处需要匹配小数点),需要使用转义字符\(反斜杠)将它进行转义,即\.

  3、如果要匹配小数点后保留2位小数,则只需要改一下限定符即可。\.\d{2}

六、总结

  ^(([1-9]{1}\d*)|(0{1}))(\.\d{0,2})?$就表示了小数点后可以保留0位、1位、或2位小数。

  要求小数点后只能保留2位小数,则修改表示小数点后面数字的重复次数(即位数)的限定符{},直接将{0,2}改为{2},

    然后去掉限定符?即可。去掉了 ? 就代表该数不可能是整数,一定是小数。

  最终的正则表达式:^(([1-9]{1}\d*)|(0{1}))(\.\d{2})$

转载于:https://www.cnblogs.com/jhxk/articles/10715193.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python字符串是什么_python字符串表示什么

python的字符串就是表示一串字符,字符可以是中文,英文或者数字,或者混合的文本。 python字符串的几种表达方式 1 使用单引号扩起来字符串>>> my python lession #以单引号将字符串扩起来 my python lession >>> a my pyth…

PgSql备份pg_dump与还原手记pg_restore(转)

备份:pg_dump -h localhost -p 5432 -U tradesns -W -F c -b -v -f "/home/tradeworkwangbin/us2010.backup" us2010 恢复:pg_restore -h 192.168.0.100 -p 5432 -U postgres -W -d us2011 -v "/root/us2010.backup" 真没有想到&…

ubuntu ls命令

ls 显示当前文件夹下文件 ls -l 列表显示 ls -a 显示隐藏文件 ls -h 文件大小,自动找单位(Kb、M、G) 也可以 ls -l -a -h (-l -a -h没有先后顺序,-a -h -l) 也可以 ls -lah &…

vue 在 html 中自定义 tag

v-if,v-for,:key,:style,v-text,click,:src,:poster,:class,:href转载于:https://www.cnblogs.com/whm-blog/p/10718697.html

cmd进入python环境_python2和python3同时存在,如何CMD中进入不同的环境

当电脑上同时装了python2和python3时,虽然在二者的路径都写入了环境变量PATH中,但是在CMD中运行python命令时只能进入2或者3(安装顺序不同进入的也不同),如何进入想要的python版本环境中: 1.首先将二者的的…

ubuntu grep搜索文本

grep (Global search Regular Expression and Print out the line) grep “ntfs” xxx.txt 显示xxx.txt包括ntfs行 grep -n “ntfs” xxx.txt 显示xxx.txt包括ntfs行,行数 grep -v “ntfs” xxx.txt 显示xxx.txt不包括ntfs行 grep…

java 死锁 解决_Java死锁故障排除和解决

java 死锁 解决JavaOne年度会议的一大优点是主题专家介绍了几个技术和故障排除实验室。 这些实验室之一尤其引起了我的关注:Java冠军Heinz Kabutz提出的“ HOL6500-查找和解决Java死锁 ”。 这是我在该主题上看到的最好的演示之一。 我建议您自己下载,运…

如何使用War包部署Tomcat

前提: 1:已打包好的项目工程War文件 2:正常运行的Tomcat环境 当前的War文件为:GPCDMS.war Tomcat环境为:http://10.122.111.76:9080/ 具体步骤: 1:点击主页左侧 Tomcat Manager 并使用 ad…

delphi 停电文本数据丢失_NLP中的文本分析和特征工程

语言检测,文本清理,长度测量,情绪分析,命名实体识别,n字频率,词向量,主题建模前言在本文中,我将使用NLP和Python解释如何分析文本数据并为机器学习模型提取特征。NLP(自然语言处理)是…

ubuntu mv和cp命令

mv 1.txt 2.txt 将文件1.txt重命名为2.txt mv abc/ 123/ 将文件夹abc重命名为123 mv 1.txt /abc 将文件1.txt剪切粘贴导到/abc cp 1.txt abc 将文件1.txt复制到/abc cp abc /123 -r 将文件夹abc复制到文件夹123

了解一级JPA缓存

我敢打赌,每个Java开发人员至少听说过L1(又名EntityManager或Session)缓存。 但是您的理解水平足够好吗? 如果您不确定,请考虑阅读这篇文章。 首先,我们需要知道持久性上下文是什么。 根据EntityManager J…

使用Eclipse开发Java Web过程中Debug调试的使用方法

这里介绍的是在Eclipse中的Debug调试。首先右击项目选择Debug As -- Debug on Server 或者点击Server面板的小昆虫图标,启动Debug模式。 运行web项目,进行到需要调试的地方,在执行页面操作之前,在即将要运行的代码中添加断点&…

JS-this的使用

做前端开发已经半年之多了,前几天看见apply时心生疑惑,于是查阅了好多资料但还是不太理解,只知道是源于this的问题,今天偶然看到了阮一峰大佬的讲解js中的this问题(http://www.ruanyifeng.com/blog/javascript/&#x…

如何从几何角度上理解方程组只有一个解_深度科普---电磁波(三):无激励下的真空中的Maxwell方程组的解...

很久没有写过与自己专业相关的文章了,于是计划穿插进几篇有关电磁波的深度科普的文章。计划分为几个部分:1. 真空中的 方程组2. 材料中的 方程组和电磁场的边值条件3. 无激励下的真空中的 方程组的解---电磁波(本文章)4. 稳定状态…

matlab figure被图像填充

imgimread(3.jpg);imgrgb2gray(img);figure(1);%figure名字为 Figure 1figure(name,第一);%figure名字为 Figure:第一figure(NumberTitle,off,Name,原图);%figure名字为原图[cols,rows]size(img);set (gcf,Position,[400,300,cols,rows]); %设置figure位置&…

Thread的run()与start()的区别

Java中thread的start()和run()的区别:1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法来启动一个线程&#xff…

云计算未来趋势预测:AIaaS、无服务器、云端一体化等将成重点?

云计算是一种业务模式,服务提供商在定制的环境中处理客户的完整基础架构和软件需求。随着云计算的发展,云服务和解决方案也将随之增长。 软件即服务(SaaS)预计到2020年将以18%的年均复合增长率增长,平台即服务(PaaS)的采用率将在2020年达到56…

C# list删除 另外list里面的元素_在Python 中 List 操作 9种例子详细了解

list的操作有循环、切片、增、删、改、查、反转、排序;接下来我们逐个来说一下;首先我们要知道,列表的索引(下标)从0开始,最后一个可以用-1表示。1. 循环如果直接for 循环一个list 的时候,那么每…

乱码

程序读入或输出乱码,检查文件的编码方式utf-8或是gbk等;检查程序的解码方式是否与文件的编码方式相同

hadoop矩阵乘法源码_使用Hadoop计算共现矩阵

hadoop矩阵乘法源码这篇文章继续我们在MapReduce的数据密集型文本处理一书中实现MapReduce算法的系列。 这次,我们将从文本语料库创建单词共现矩阵。 本系列以前的文章是: 使用MapReduce进行数据密集型文本处理 使用MapReduce进行数据密集型文本处理-本…