屏蔽文本框只接受小数(Masking Textbox to accept only decimals

2019-07-31 07:16发布

我使用此链接中的技术来掩盖我的文本框接受以十进制格式(与一个周期位数)的字符串。

如何定义文本框输入限制?

下面是我把面具正则表达式:

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

对于一些奇怪的原因,它让我输入数字,但我不能插入文本框我的时间。

我也验证了正则表达式这里,所以正则表达式是绝对正确的。

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

可能是什么问题?

Answer 1:

修改您正则表达式与此:

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

DEMO

编辑:

上述正则表达式也将允许123..1是超过1个小数点。 所以我就发现了这个问题,并固定在下面的一个:

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

DEMO



Answer 2:

要么你可以使用正则表达式

^(\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;
        }
    }


文章来源: Masking Textbox to accept only decimals