繁体   English   中英

.NET正则表达式十进制数字

[英].NET regex decimal numbers

我必须在以下简单假设下验证正则表达式十进制数字(介于00.00至35.35之间)(我正在使用C#)。

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

换句话说,它应该是一个十进制数字,范围为2个小数点。

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

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

认真。 使用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]))$

我会使用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;
    }

试试这个正则表达式:

^(0?\d|[12]\d|3[0-4])?\.\d\d$|^35\.([02]\d|3[05])$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM