Javascript function need allow numbers, dot and comma

不羁岁月 提交于 2019-11-27 17:55:07

问题


I need to create a function to allow numbers dot and comma. So anyone corrects the following function

function on(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

回答1:


Firstly your regex currently doesn't allow comma, which is your requirement.

Secondly, you haven't used any quantifier, so your regex will match only a single character - one of [0-9] or a dot. You need to use a quantifier.

Thirdly, instead of using pipe, you can move all characters inside the character class only.

Try using the below regex:

/^[0-9.,]+$/

Quantifier + is used to match 1 or more occurrence of the pattern.
^ and $ anchors match the beginning, and end of the string respectively.




回答2:


No need for JavaScript:

<input type="text" pattern="[0-9.,]+" title="Please enter a valid decimal number." />

Modern browsers will handle this perfectly.

If you want to specifically allow commas as thousand separators and a single decimal point, try this:

... pattern="\d{1,2}(,\d{3})*(\.\d+)?" ...

Note that I am firmly against blocking user input. They should be able to type what they want, and then told if they enter something invalid.




回答3:


Your regex is incorrect.

var regex = /^[0-9.,]+$/;

Regex javascript, why dot and comma are matching for \

https://stackoverflow.com/tags/regex/info




回答4:


This is the best solution, in my opinion, covers more cases of inputs and allow floats.

     $( ".numerical" ).on('input', function() { 
                var value=$(this).val().replace(/[^0-9.,]*/g, '');
                value=value.replace(/\.{2,}/g, '.');
                value=value.replace(/\.,/g, ',');
                value=value.replace(/\,\./g, ',');
                value=value.replace(/\,{2,}/g, ',');
                value=value.replace(/\.[0-9]+\./g, '.');
                $(this).val(value)

        });



回答5:


Sometimes /^[0-9.,]+$/ is not work If not, then you could do something like this:

/^(?:[\d-]*,?[\d-]*\.?[\d-]*|[\d-]*\.[\d-]*,[\d-]*)$/



回答6:


The Regex that I made for numbers following format of COMMA9.2

Example

  1. 1,350.88
  2. 120.00
  3. 1,500,999.24
  4. 100
  5. 10000000

RegEx

^(\d+|\d{1,3},\d{3}|\d{1,3},\d{3},\d{3}|\d{1,3}(,\d{3})*|\d{1,3}(,\d{3})*\.\d+)$



来源:https://stackoverflow.com/questions/18033088/javascript-function-need-allow-numbers-dot-and-comma

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!