用于接受文本框中的浮点数的正则表达式或等效表达式-asp.net C#

用于接受文本框中的浮点数的正则表达式或等效表达式-asp.net C#,c#,asp.net,regex,C#,Asp.net,Regex,下午好 我需要帮助来解决以下问题: 我需要将值的范围限制为文本框。 文本框中已存在允许的最小值和最大值,但缺少中间值 例如: 从最小值-2,00到最大值0,00它接受:-2,00 |-1,75 |-1,50 |-1,25 |-1,00 |-0,75 |-0,5 |-0,25 | 0,00 从最小值0,00到最大值1,00它接受:0,00 | 0,25 | 0,50 | 0,75 | 1,00 等等 最好的方法是什么 谢谢。您应该使用,并让它根据验证器的参数检查所需的步骤。类似于RangeVali

下午好

我需要帮助来解决以下问题:

我需要将值的范围限制为文本框。 文本框中已存在允许的最小值和最大值,但缺少中间值

例如:

从最小值-2,00到最大值0,00它接受:-2,00 |-1,75 |-1,50 |-1,25 |-1,00 |-0,75 |-0,5 |-0,25 | 0,00

从最小值0,00到最大值1,00它接受:0,00 | 0,25 | 0,50 | 0,75 | 1,00

等等

最好的方法是什么

谢谢。

您应该使用,并让它根据验证器的参数检查所需的步骤。类似于
RangeValidator
,但具有一些自定义逻辑。

^(-12]|[01])、00 |(-01]|[0)、(50 |[27]5)$

(无法添加评论…) @菲利佩·科斯塔-我不知道最小最大值,我想这只是从左到右验证。如果设置了^$anchors,则有4个字符的确定长度

(无法添加其他评论…)
@Filipe Costa-基于字符的验证越难,列越多。我会让控件在每次按键时进行数字验证

下面是一个基于-127-128字符的验证测试用例(在Perl中),它显示了当您拥有更多的列时,它会变得多么复杂

use strict;
use warnings;

 my $rx_128 = qr/
 ^ (?:
       - [1-9] (?: (?<=1)\d(?:(?<=[01])\d?|(?<=2)[0-7]? ) | \d? ) 
     |     \d  (?: (?<=1)\d(?:(?<=[01])\d?|(?<=2)[0-8]? ) | \d? )
   )
  $ /x;

# Test range -127 to 128

 my $count = 0;
 for (-5000 .. 5000)
 {
    if ( /$rx_128/ )
    {
        print $_,"\n";
        $count++;
    }
} 
print "\nOK = $count\n";
使用严格;
使用警告;
我的$rx_128=qr/
^ (?:

-[1-9](?:(?您可以使用CustomValidator并编写自己的验证方法来检查该值是否为0.25的倍数。您可以将其添加到页面:

<asp:CustomValidator 
    ID="NumericInputValidator" 
    ControlToValidate="NumericInput"
    Display="Dynamic"
    runat="server" 
    OnServerValidate="ValidateNumericInput" 
    ErrorMessage="The given input must be a numberic value and it must be a multiple of 0.25" />

有没有可能解释最小am最大值是在哪里声明的?在某些情况下,有一个限制,例如从-127到128。在这种情况下,我可以在哪里定义我只想要从X到Y的数字?我希望我能说清楚。
protected void ValidateNumericInput(object sender, ServerValidateEventArgs args)
{
    decimal value;
    IFormatProvider formatProvider = CultureInfo.CurrentCulture; // Change this to the desired culture settings.
    bool isNumber = decimal.TryParse(args.Value, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, formatProvider, out value);

    // The number must be a multiple of 0.25, so when multiplied by 4, it should be an integer.
    args.IsValid = isNumber && decimal.Truncate(value * 4) == value * 4;
}