屏蔽文本框仅接受小数

时间:2012-08-31 05:39:52

标签: c# .net wpf regex maskedtextbox

我正在使用此链接中的技术来屏蔽我的文本框以接受十进制格式的字符串(具有单个句点的数字)。

How to define TextBox input restrictions?

这是我放在面具中的正则表达式:

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

由于一些奇怪的原因,它允许我输入数字,但我不能在我的文本框中插入句点。

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

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

可能是什么问题?

2 个答案:

答案 0 :(得分:8)

用这个修改你的正则表达式:

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

<强> DEMO

修改

上述正则表达式还允许123..1超过1小数点。所以我发现了问题,并修复了以下问题:

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

<强> DEMO

答案 1 :(得分: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;
        }
    }