正则表达式允许数字在-90.0和+90.0之间

时间:2010-11-04 02:39:26

标签: c# regex

允许数字介于-90.0和+90.0之间的正则表达式是什么?中间的数字可以是浮点数或整数。

4 个答案:

答案 0 :(得分:17)

我认为您不想使用正则表达式。如果您的数据存储在字符串中,请使用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,那么它就更容易了 - 无需解析。

答案 1 :(得分:9)

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

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

这将匹配-90.0到90.0,包括在内。如果您希望它是独占的,请删除90.0条款。

  • 否定(可选):
    -?

  • 个位数
    或两位数,10-89
    \d|([1-8][0-9])
    PLUS十进制,0-9(可选):
    (\.\d)?

  • 或90
    90
    PLUS十进制,0(可选):
    (\.0)?

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

  • 特定精度(在本例中为七)\d|([1-8][0-9])(\.\d{1,7})?
  • 无限精度\d|([1-8][0-9])(\.\d+)?

必要时逃生

答案 2 :(得分:2)

"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之间的可选十位数组成的数字,后跟一个数字,后跟一个可选的小数和小数位。但你明白为什么使用正则表达式是如此混乱。将边界检查为数字,而不是一系列数字。

答案 3 :(得分:1)

一个90.0范围内的+/-选项符号的简单正则表达式是:

[-+]?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? )?