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
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.
Sometimes /^[0-9.,]+$/
is not work
If not, then you could do something like this:
/^(?:[\d-]*,?[\d-]*\.?[\d-]*|[\d-]*\.[\d-]*,[\d-]*)$/
The Regex that I made for numbers following format of COMMA9.2
Example
1,350.88
120.00
1,500,999.24
100
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+)$
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)
});
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.
Your regex is incorrect.
var regex = /^[0-9.,]+$/;
Regex javascript, why dot and comma are matching for \
https://stackoverflow.com/tags/regex/info