Enmascarando el cuadro de texto para aceptar solo decimales

Estoy utilizando la técnica de este enlace para enmascarar mi cuadro de texto para aceptar cadenas que están en formato decimal (dígitos con un solo período).

¿Cómo definir las restricciones de entrada de TextBox?

Aquí está la expresión regular que pongo en la máscara:

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

Por alguna extraña razón, me permite ingresar los dígitos pero no puedo insertar el punto en mi cuadro de texto.

También he validado la expresión regular aquí, así que la expresión regular es definitivamente correcta.

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

¿Cual podría ser el problema?

Modifique su expresión regular con esto:

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

MANIFESTACIÓN

EDITAR:

La expresión regular anterior también permitirá 123..1 que es más de 1 punto decimal. así que encontré el problema y lo solucioné con el siguiente:

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

MANIFESTACIÓN

Tiene que usar la expresión regular mencionada anteriormente (@Vishal Suthar) o usar el siguiente evento para los cuadros de texto

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

Bloquee las entradas excepto los decimales mientras teclea usando 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; } }); }); } 

Usar como:

$ ('# txtbox'). ForceDecimalNumericRules () en la carga de documentos