zoukankan      html  css  js  c++  java
  • 小数点后保留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})$

  • 相关阅读:
    Jquery EasyUI tabs处理
    C# ToString格式控制符
    SQL删除重复数据,保留一条
    stm32f4xx 的IWDG使用的一般步骤
    stm32f4xx 的EXTI使用的一般步骤
    STM32F4xx---EXTI 外部中断
    数组和指针 到 存储类(1)
    uCosII 从 OSStart开始到思维定势··········
    《C和指针》一书介绍操作符优先级
    OSTimeTick()函数解析
  • 原文地址:https://www.cnblogs.com/hyunbar/p/10083532.html
Copyright © 2011-2022 走看看