C# 正则表达式,允许数字介于-90.0和+;90
允许-90.0和+90.0之间的数字使用的正则表达式是什么?介于两者之间的数字可以是浮点数或整数。我认为您不想为此使用正则表达式。如果数据存储在字符串中,请使用(或),然后检查结果值以确保其在所需范围内。例如: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)) { //
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)?
- 特定精度(本例中为七)
\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