Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regex pattern for single digit with two decimal point

Below I have used my code and I want to allow only single digit or with two decimal point like below.

valid number.

1
2.34
9.78

Invalid number.

10
1.234
99.1234

user can not insert invalid number.

I have use below code.

<script src="mos-css/jquery-latest.js"></script>
<script>
document.write('<input id="inputField" onkeyup="run(this)"  />');
function run(field) {
    setTimeout(function() {
       // var regex =  /^\d{1}\.\d{2}$/;
      // var regex = /^[0-9]+(\.[0-9]{5})?$/;
    var regex =/^[0-9](\.\d{2})?$/;
    ///^\d+(\.\d{5})?$/;
        field.value = regex.exec(field.value);
      // field.value = regex.exec(field.value);
    }, 5);
}
</script>

Thanks All.

like image 554
Girish Bhutiya Avatar asked Jan 28 '26 19:01

Girish Bhutiya


2 Answers

<html>  
<head>  
<html>   
  <head>     
    <script>  
      // Retrieve last key pressed.  Works in IE and Netscape.  
      // Returns the numeric key code for the key pressed.  
      function getKey(e)  
      {  
        if (window.event)  
           return window.event.keyCode;  
        else if (e)  
           return e.which;  
        else  
           return null;  
      }  
      function restrictChars(e, obj)  
      {  
        var CHAR_AFTER_DP = 2;  // number of decimal places  
        var validList = "0123456789.";  // allowed characters in field  
        var key, keyChar;  
        var char=0;
        key = getKey(e);  
        if (key == null) return true;  
        // control keys  
        // null, backspace, tab, carriage return, escape  
        if ( key==0 || key==8 || key==9 || key==13 || key==27 )  
           return true;  
        // get character  
        keyChar = String.fromCharCode(key);  
        // check valid characters   
        if (validList.indexOf(keyChar) != -1)  
        {  
          // check for existing decimal point  
          var dp = 0;
          if(obj.value.indexOf( ".")==-1){

              // room for more after decimal point?  
              if( obj.value.length - dp <= char)  {
                return true;  }
                else{
                if(keyChar == ".")  
                    return true;  
                else
                    return false;
                }
          }
          if((dp = obj.value.indexOf( ".")) > -1)  
          { 
            if(keyChar == ".")  
              return false;  // only one allowed  
            else  
            {  
              // room for more after decimal point?  
              if( obj.value.length - dp <= CHAR_AFTER_DP)  
                return true;  
            }  
          }  
          else {return true};  
        }  
        // not a valid character  
        return false;  
      }  
    </script>  
  </head>  
  <body>  
    <form name="test">  
      Input Money Amount $<input type="text" name="money" onKeyPress="return restrictChars(event, this)">  
    </form>  
  </body>  
</html>

try it code

like image 199
ankit Avatar answered Jan 30 '26 08:01

ankit


Why not accept all inputs, then do:

field.value.toFixed(2);

Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!