小数点后保留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/hyunbar/p/10083532.html

时间: 2024-10-11 07:32:55

小数点后保留2位小数的正则表达式的相关文章

C# 小数点后保留两位小数,四舍五入的函数及使用方法

Math.Round(45.367,2)     //Returns   45.37 Math.Round(45.365,2)     //Returns   45.36 说明: C#中的Round()不是我们中国人理解的四舍五入,是老外的四舍五入,是符合IEEE标准的四舍五入,具体是五舍六入. 下面的才是符合中国人理解的四舍五入 Math.Round(45.367,2,MidpointRounding.AwayFromZero);    //Returns   45.37 Math.Round

EL表达式jsp页面double小数点后保留两位

EL表达式jsp页面double小数点后保留两位,四舍五入 <fmt:formatNumber type="number" value="${member.loginBonusAmount } " maxFractionDigits="2"/> maxFractionDigits:保留几位小数

js小数点后保留两位

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>

C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字

在C++编程中,有时候要求我们把数据保留小数点后几位,或是保留多少位有效数字等等,那么就要用到setiosflags和setprecision函数,记得要包含头文件#include <iomanip>,请参考下面的示例: #include <iostream> #include <iomanip> // Need this using namespace std; int main() { float a = 4, b = 3, c = 2; cout <<

显示的数据,小数点后保留2位

1. GridView中用DataFormatString="{0:F}" <asp:GridView ID="gvPartDetail" runat="server" AutoGenerateColumns="False" CellPadding="4" Font-Names="Arial" Font-Size="10pt" AllowPaging="

C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出

class TimeCount { // 临时变量,存放当前类能表示的最大年份值 private static ulong MaxYear = 0; /// <summary> /// 获取毫秒能表示的最大年份数 /// </summary> /// <returns>年份数最大值</returns> public static ulong GetMaxYearCount() { if (TimeCount.MaxYear != 0) return Time

保留两位小数正则

//正则表达式 验证数字格式 非负数 小数点后保留两位 ,正则式如下: ^(([1-9]+)|([0-9]+\.[0-9]{1,2}))$ function checkMoneyFormat(val){ var reg = /^(([1-9]+)|([0-9]+\.[0-9]{1,2}))$/; var isMoneyFormatRight = reg.test(val); return isMoneyFormatRight; }

使Decimal类型数据保留N位小数且不进行四舍五入操作(C#)

一 问题描述 开发中,需要使Decimal类型数据保留小数点后的两位小数且不需要进行四舍五入操作,即直接截取小数点后面的两位小数即可.例如:1.245M --> 1.24,而不是1.25 使用Decimal.Round()方法可以实现保留Decimal类型数据小数点后的若干位小数,但是该方法会进行四舍五入操作,而不是直接截取.所以,该方法不可取,在网上搜寻一番也没有找到合适的方法,便自己实现了一个截取Decimal类型数据小数点后若干位的方法. 二 详细的实现代码 using System; n

java double 保留两位小数

java保留两位小数问题: 方式一: 四舍五入  double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  保留两位小数  ---------------------------------------------------------------   方