代码之家  ›  专栏  ›  技术社区  ›  Nancy

如何为具有特定范围的十进制数字场景编写正则表达式?

  •  -2
  • Nancy  · 技术社区  · 2 年前

    我正在努力编写一个符合以下标准的Regex。 我尝试了下面的一个,尽管我的一些标准与下面的正则表达式不匹配。

    ^([0-9]{1,2})(\.0)|(\.[1-9]{1,2})$
    
    1. nn.mm的十进制数(nn,mm可以是数字[0-9])
    2. 如果存在mm,例如01,02,03..09,则第二个数字是不允许的,因为第一个数字是0。

    有效值为`10.00、10.10、99.12、12.99、10.11、01.10、00.00、00.10、1.1、0.9、0.1、2.3、1.10、9.20、4.56。。。。

    无效值为 00.01, 99.01, 12.09, 10.08, 10.01, 10.02...10.09 (因为小数点后,第一位是0,这是无效的)

    更准确地说:

    [0-9][0-9].0  //valid
    [0-9][0-9].[0-9]0  //valid
    [0-9].0  //valid
    [0-9].[0-9]0  //valid
    [0-9][0-9].[0-9]0 //valid
    
    [0-9].0[0-9] //invalid
    [0-9][0-9].0[0-9] //invalid
    [0-9][0-9].0[0-9] //invalid
    [0-9][0-9].[0-9] //invalid
    [0-9][0-9].[0-9][0-9] //invalid
    
    2 回复  |  直到 2 年前
        1
  •  1
  •   Nick SamSmith1986    2 年前

    此正则表达式应提供您想要的结果:

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

    它匹配:

    • ^ :字符串的开头
    • [0-9]{1,2} :1或2位数字
    • \. :一段时间( . )
    • (?:00?|[1-9][0-9]?) :要么:
      • 00? :一个零,后面跟着一个可选的0;或
      • [1-9][0-9]? :范围内的数字 1-9 ,后跟可选的第二位数字
    • $ :字符串结尾

    Regex演示在 regex101

        2
  •  0
  •   Reilas    2 年前

    这是一个 匹配模式 。

    ^\d\d\.(?:00|[1-9]\d|\d)$
    
    推荐文章