0

ユーザーが2以上の値の数字のみを入力できるようにする正規表現を作成しようとしています(0と1は許可されていません)...

私はかなり長い間これをやってのけようとしてきましたが、まだ成功していません...たとえば、これを試しました:

[2-9]|([1-9][0-9]+)

2 から 9 までの 1 つの数字を使用するか、0 以外の任意の数字と少なくとも別の数字を入力するかのいずれかです。この方法では、ユーザーが 0 または 1 のいずれかを入力することはできません。

そこに構文エラーがあるかどうかわかりませんが、どうすればよいですか? 前もって感謝します。

4

2 に答える 2

3

最初に Int32.TryParse を実行してから、取得した値が目的の範囲内にあるかどうかをテストすることをお勧めします。大まかなアイデアは次のとおりです。

int enteredValue;

if(Int32.TryParse(TextBox1.Text, out enteredValue))
{
    if(enteredValue >= 2 )
    {
       //....
    }
}

正規表現は、あなたが達成しようとしていることを意図したものではありません。

于 2012-11-29T18:53:13.013 に答える
1

実際に RegEx でそれを行うことができるかどうかはわかりません。それができれば、非常に複雑な見た目の RegEx 文字列が得られるでしょう。しかし、なぜ正規表現を使用するのでしょうか? 値が数値であり、1 より大きいかどうかを確認するだけで済みます。クライアントでは JavaScript を使用できます。次に、サーバーで再度確認します。これを行うための JavaScript 関数を次に示します。必要に応じて、これを CustomValidator で使用できます。

function CheckTwoOrLarger(x)
{
    result = false;

    if ( isFinite(x)         //Check if number
         && parseInt(x) >= 2 //Check if 2 or larger
         ) result = true;

    return result;
}
于 2012-11-29T19:11:57.773 に答える