.NET正则表达式十进制数

时间:2010-03-05 19:12:11

标签: .net regex

我必须在00.00到35.35之间使用正则表达式十进制数进行验证,并遵循以下简单假设(我使用的是C#)。

1)不需要前导零(可选)。 2)总是需要2位小数。

换句话说,它应该是一个带有2个小数点的范围内的十进制数。

有效数字的示例是:0.00,00.00,.67,2.89 并且应该对这些数字失败:8.9999(4位小数),65.00(超出范围)

我没有困难验证2个小数点,但不知道如何做范围? 这是否可以使用正则表达式完成?

3 个答案:

答案 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])$