Javascript function need allow numbers, dot and comma

时间秒杀一切 提交于 2019-11-28 11:02:01

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.

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.

HIRA THAKUR

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)

        });

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

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

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+)$

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