我必须在00.00到35.35之间使用正则表达式十进制数进行验证,并遵循以下简单假设(我使用的是C#)。
1)不需要前导零(可选)。 2)总是需要2位小数。
换句话说,它应该是一个带有2个小数点的范围内的十进制数。
有效数字的示例是:0.00,00.00,.67,2.89 并且应该对这些数字失败:8.9999(4位小数),65.00(超出范围)
我没有困难验证2个小数点,但不知道如何做范围? 这是否可以使用正则表达式完成?
答案 0 :(得分:4)
严重。使用RegEx检查输入是否与^\d{1,2}\.\d{2}$
匹配,然后将其转换为数字并检查0 <= x && x <= 35.35
。 RegEx并非旨在成为计算器。
如果你坚持:
^(?:(?:[012]?\d|3[0-4])\.\d{2}|35\.(?:[012]\d|3[0-5]))$
答案 1 :(得分:2)
我会使用Decimal.TryParse。 E.g:
private const decimal min = 0.0M;
private const decimal max = 35.35M;
static bool inRange(string s)
{
Decimal d = new Decimal();
if (Decimal.TryParse(s, out d))
{
return d > min && d < max;
}
else
return false;
}
答案 2 :(得分:0)
试试这个正则表达式:
^(0?\d|[12]\d|3[0-4])?\.\d\d$|^35\.([02]\d|3[05])$