2011-01-12 5 views
0

こんにちは、正規表現または同等 - asp.net C#の

私は次のような問題を解決するために助けが必要:

私は、テキストボックスの値の範囲を制限する必要があります。 私は既にテキストボックスに許されている最小値と最大値を持っていますが、中間値がありません。

例:最大値と最小値-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

など..

これを行うにはどうすればよいでしょうか?

ありがとうございます。

答えて

0

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" /> 

そして背後にあるコードに次のようなものを追加します:あなたは、ページにこれを追加することができます

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

CustomValidatorを使用して、バリデータの引数を指定して手順を確認する必要があります。 RangeValidatorに似ていますが、カスタムロジックがあります。

2

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

(コメントを追加することはできません。) @Filipeコスタ - 私は最小最大のことは知らないが、私はこれがちょうど左から右に検証すると思います。^$アンカーが設定されている場合、4文字の明確な長さがあります。

(別のコメントを追加できません)
@Filipe Costa - charcterベースの検証を行うのが難しくなり、列が増えます。私はコントロールが各キーを押すごとに数値の検証を行うようにします。

-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"; 
+0

それは最小の午前最大値が宣言される場所を説明することは可能ですか? –

+0

場合によっては、たとえば-127から128までの制限があります。この場合、私はXからY番号だけを必要とすると定義できますか?私は自分自身を明確にすることを願っています。 –