代码之家  ›  专栏  ›  技术社区  ›  Victor

.NET regex十进制数

  •  2
  • Victor  · 技术社区  · 14 年前

    我必须使用00.00到35.35之间的regex十进制数进行验证,并进行以下简单假设(我使用的是C)。

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

    换句话说,它应该是一个小数点在2个小数点的范围内。

    有效数字的示例有:0.00、00.00、.67、2.89 在这些数字上应该失败:8.9999(4小数),65.00(超出范围)

    我不难确认2个小数点,但不知道如何确定范围? 这是不是可以用regex来完成的?

    3 回复  |  直到 14 年前
        1
  •  0
  •   Gumbo    14 年前

    尝试此正则表达式:

    ^(0?\d|[12]\d|3[0-4])?\.\d\d$|^35\.([02]\d|3[05])$
    
        2
  •  4
  •   kennytm    14 年前

    说真的。使用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]))$
    
        3
  •  2
  •   Justin R.    14 年前

    我会用 Decimal.TryParse . 例如。:

        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;
        }