Currently i am using this regex to match for positive numbers with a single decimal point
/^\d+(\.\d+)?$/
But this doesn't allow commas. How can i modify this to allow zero or more commas before the decimal point?
Example :
EDIT:
Valid values
The values can be entered with or without comma. The datatype of this field is SQL MONEY, so it will handle comma's.
need
/^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/
See the regex demo
Details
^
- start of string(?:\d{1,3}(?:,\d{3})*|\d+)
- Either of:
\d{1,3}(?:,\d{3})*
- 1 to 3 digits followed with 0+ sequences of a ,
and 3 digits|
- or\d+
- 1 or more digits(?:\.\d+)?
- an optional sequence of .
and 1+ digits$
- end of string.var strs = [',,,,', '111', '11,111', '11,111.0', '111111'];
var re = /^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/;
for (var s of strs) {
console.log(s + " => " + re.test(s));
}
This is a very simple general solution, without any assumptions about how many digits are needed.
/^\d[\d,]*(\.\d+)?$/
[\d,]
will match digits or commas.
You could make the regex more complicated if you really need it to be more specific.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With