1

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

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

这是我放在掩码中的正则表达式:

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 回答