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

允许数字介于-90.0和+90.0之间的正则表达式

  •  3
  • Xaisoft  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  17
  •   Donut    14 年前

    我想你不想用正则表达式来做这个。使用 Double.Parse() (或 Double.TryParse() )如果数据存储在字符串中,则检查结果值以确保其在所需范围内。例如:

    public bool IsInRange(string value)
    {
       bool isInRange = false;
    
       double parsed = 0;
       if (Double.TryParse(value, out parsed))
       {
          // use >= and <= if you want the range to be from -90.0 to 90.0 inclusive
          isInRange = value > -90.0 && value < 90.0;
       }
    
       return isInRange;
    }
    

    double ,这样就更容易了——不需要解析。

        2
  •  9
  •   Merlyn Morgan-Graham    14 年前

    并不是说您真的想在这里使用正则表达式(而是应该解析它,并对数值类型(如float或double)进行比较)。但是,你可以这样做:

    -?(\d|([1-8][0-9])(\.\d)?)|(90(\.0)?)
    

    • 阴性(可选):
      -?

    • 一位数
      或两位数,10-89
      \d|([1-8][0-9])
      加上小数,0-9(可选):
      (\.\d)?


    • 90
      加上小数,0(可选):
      (\.0)?

    如果要支持更多小数点,请将0-89.9子句更改为:

    • \d|([1-8][0-9])(\.\d{1,7})?
    • 无限精度 \d|([1-8][0-9])(\.\d+)?

    必要时逃走

        3
  •  1
  •   Theo Belaire    14 年前

    "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems."

    这个问题最好用支票来解决。但是,如果你想要一个正则表达式,你可以有一个正则表达式。

    -?0*((90(\.0*)?)|([1-8]?\d(\.\d*)?))
    

    我想会有用的。匹配一个可选的“-”,后跟任意数量的零,后跟任意数量的零的90,或一个由1到8之间的可选十位数字组成的数字,后跟一个一位数字,后跟一个可选的小数和小数位。但你知道为什么用正则表达式来处理这个问题是如此混乱。检查边界是数字,而不是一系列数字。

        4
  •  1
  •   x15    5 年前

    [-+]?90(?:\.0?)?|[-+]?(?:\d|[1-8]\d)(?:\.\d?)?

    扩大

       #   [-+]  90.0
    
       [-+]? 90
       (?: \. 0? )?
    |  
       #    [-+]  89.9  to   0.0
       #           0.0  to  89.9
    
       [-+]? 
       (?:
            \d 
         |  [1-8] \d 
       )
       (?: \. \d? )?