屏蔽文本框仅接受小数

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

如何定义TextBox输入限制?

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

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

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

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

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

可能是什么问题?

修改你的正则表达式:

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

DEMO

编辑:

上面的正则表达式也允许123..1超过1小数点。 所以我刚刚找到了问题并修复了以下问题:

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

DEMO

要么必须使用上面提到的(@Vishal Suthar)正则表达式,要么使用下面的事件来表示文本框

  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; } } 

在使用JQuery键入自己时阻止除小数之外的条目

 //define Decimal numeric restriction jQuery.fn.ForceDecimalNumericRules = function () { return this.each(function () { $(this).keydown(function (event) { // Prevent shift key since its not needed if (event.shiftKey == true) { return false; } //backspace, tab,End,Home, left arrow, right arrow, delete if (event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 35 || event.keyCode == 36 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46) { } // Allow Only: keyboard 0-9, numpad 0-9,decimal point //TODO: To include validation for number of decimal places else if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 110) { // Allow normal operation } else { // Prevent the rest return false; } }); }); } 

用于:

$('#txtbox')。文件加载中的ForceDecimalNumericRules()