C# 正则表达式,允许数字介于-90.0和+;90

C# 正则表达式,允许数字介于-90.0和+;90,c#,regex,C#,Regex,允许-90.0和+90.0之间的数字使用的正则表达式是什么?介于两者之间的数字可以是浮点数或整数。我认为您不想为此使用正则表达式。如果数据存储在字符串中,请使用(或),然后检查结果值以确保其在所需范围内。例如: public bool IsInRange(string value) { bool isInRange = false; double parsed = 0; if (Double.TryParse(value, out parsed)) { //

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

我认为您不想为此使用正则表达式。如果数据存储在字符串中,请使用(或),然后检查结果值以确保其在所需范围内。例如:

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;
}
public bool IsInRange(字符串值)
{
bool-isInRange=false;
双解析=0;
if(Double.TryParse(值,未解析))
{
//使用>=和-90.0&&value<90.0;
}
返回isInRange;
}

如果您的值已经是一个
双精度
,那么就更容易了——不需要解析。

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

-?(\d|([1-8][0-9])(\.\d)?)|(90(\.0)?)
这将匹配-90.0到90.0(含90.0)。如果希望它是独占的,请删除90.0条款

  • 否定(可选):
    -?

  • 个位数
    或两位数,10-89
    \d|([1-8][0-9])

    加小数,0-9(可选):
    (\。\d)?

  • 还是90
    90

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

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

  • 特定精度(本例中为七)
    \d|([1-8][0-9])(\.\d{1,7})
  • 无限精度
    \d |([1-8][0-9])(\.\d+)
如有必要,请退出

这个问题最好通过检查来解决。但是,如果你想要一个正则表达式,你可以有一个正则表达式

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

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

90.0范围内+/-选项符号的简单正则表达式(可选浮点数为小数点后1位)为:

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

为什么是正则表达式?为什么不使用数字比较?包括或不包括90?您需要支持“e”符号吗?如果是这样,那将是一个丑陋的正则表达式。可以添加作为一个选项<代码>([-+]?([0-8]\.\d{1,7}9\.0{1,7})[eE][+]?0{0,2}1)还是太过分了?@sixlettervariables:没有正则表达式太过分了!除非整个世界都是由正则表达式组成的,否则我不会停下来;)该正则表达式匹配OP指定范围内的数字,但它也匹配
0123456789
9876543210
909999999
-00000000000000000
,以及许多其他无效字符串。我认为已修复它。现在小数点后的数字只能在小数点出现时显示。它仍然匹配
90000000000000
Oops,我错过了。您可以看到我不经常使用正则表达式。您正在匹配
90.9
@Toto-事实上,我将原始错误的
-90\.0\-(?:\d\[1-8]\d)\.\d\.(?:\d\[1-8]\d)\.\d\\90\.0