2012-08-31 59 views
0

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

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

可能是什么问题?

回答

8

与此修改您正则表达式:

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

DEMO

编辑:

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

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

DEMO

+1

哇哦这是正则表达式。我会在5分钟后将其标记为答案。谢谢! – l46kok

+0

嗯你编辑的答案给我以下错误: 错误11解析“^(\ d +)?+([\。] {1})?+([\ d] {1,2})?$” - 嵌套量词+。 – l46kok

+0

在.Net中,它会将'''将一个或多个前面的字符匹配''尝试将'Escape'特殊字符改为'+'(在@“”字面值内)。 所以你的正则表达式将会是' @“^(\ d \ +)?\ +([\。] {1})?\ +([\ d] {1,2})?$”' –

1

或者你在使用上述(@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; 
     } 
    } 
-2

使用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()在文档加载

+1

这个问题与jQuery无关。 – rageit