Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET正则表达式十进制数_.net_Regex - Fatal编程技术网

.NET正则表达式十进制数

.NET正则表达式十进制数,.net,regex,.net,Regex,我必须使用介于00.00到35.35之间的正则表达式十进制数进行验证,并进行以下简单假设(我使用的是C#) 1) 不需要前导零(可选)。 2) 始终需要2位小数 换句话说,它应该是一个小数点在2个小数点范围内的十进制数 有效数字的示例有:0.00、00.00、.67、2.89 在这些数字上应该失败:8.9999(4位小数),65.00(超出范围) 我很容易验证2个小数点,但不知道如何计算范围? 这是不是甚至可以用正则表达式来实现 试试这个正则表达式: ^(0?\d|[12]\d|3[0-4])?

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

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

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

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

我很容易验证2个小数点,但不知道如何计算范围?
这是不是甚至可以用正则表达式来实现

试试这个正则表达式:

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

真的。使用RegEx检查输入是否匹配
^\d{1,2}\.\d{2}$
,然后将其转换为一个数字并检查我将使用的
0。例如:

private const decimal min=0.0M;
私有常量十进制最大值=35.35M;
范围内的静态布尔值(字符串s)
{
十进制d=新的十进制();
if(十进制锥巴色(s,out d))
{
返回d>min&&d
BTW,它是“.NET regex”,而不是“C#regex”。同样的正则表达式也适用于VB.NET和F#。不,这并不不幸(幸运吗?)。这是眼部治疗应用程序数据输入screen@John谢谢你的编辑,约翰。是的,我知道,它是一个“.NET正则表达式”,只是没有正确地说明它的上限是35.35,所以
35.56
不应该通过。根据35.35(或任何数值)进行验证不应该作为正则表达式的一部分。这是可能的,但会使事情变得非常棘手和混乱。@是的,我同意这一点,只要看看上面的正则表达式。谢谢你的回复。是的,这就是我想知道的-是使用RegExValidator更好,还是使用像这样的方法的CustomValidator更好。@VictorS:我认为这比使用regex好得多,但可能您正处于需要正则表达式的情况下。@VictorS:这种方法的另一个好处是,您可以将此功能放入
DecimalRangeValidator
类中,然后通过参数化max、min和test值,将其重新用于其他范围(如果有),有些人坚持使用正则表达式来解决所有问题,而不是为每个要测试的范围编写一个新表达式。就像用锤子画画……可能,但不是recommended@CodyC:用锤子画一幅画会得到一些更具“创造性”的当代艺术家的赞扬。特别是如果你用它来表演的话。
^(?:(?:[012]?\d|3[0-4])\.\d{2}|35\.(?:[012]\d|3[0-5]))$
    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;
    }