我正在使用此链接中的技术来屏蔽我的文本框以接受十进制格式的字符串(具有单个句点的数字)。
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
可能是什么问题?
答案 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;
}
}