2012-08-31 99 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