1

このリンクの手法を使用して、テキストボックスをマスクして、10 進数形式の文字列 (ピリオドが 1 つの数字) を受け入れるようにしています。

TextBox の入力制限を定義するには?

マスクに入れた正規表現は次のとおりです。

b:Masking.Mask="^\d+(\.\d{1,2})?$"

奇妙な理由で、数字を入力できますが、テキストボックスにピリオドを挿入できません。

ここで正規表現も検証したので、正規表現は間違いなく正しいです。

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

問題は何ですか?

4

2 に答える 2

9

これで正規表現を変更します:

^\d+([\.\d].{1,2})?$

デモ

編集:

上記の正規表現123..1では、小数点以下1桁を超えることもできます。だから私はちょうど問題を見つけて、以下のもので修正しました:

^(\d+)?+([\.]{1})?+([\d]{1,2})?$

デモ

于 2012-08-31T05:45:44.810 に答える
1

正規表現を使用できます

^(\d+)?+([\.]{1})?+([\d]{1,2})?$

または、以下のイベントを使用できます

   bool blHasDot = false;
   private void txt_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b')
        {
            // Allow Digits and BackSpace char
        }
        else if (e.KeyChar == '.' && !blHasDot)
        {
            //Allows only one Dot Char
            blHasDot=true;
        }
        else
        {
            e.Handled = true;
        }
    }
于 2012-08-31T06:18:30.730 に答える