Prayag Sagar Prayag Sagar - 1 month ago 8
Javascript Question

Regex in javascript to allow only numbers, commas, and a single decimal point

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 :


  • 11,111.00 (should be allowed)
    I am okay with numbers having any number of comma's before decimal point.



EDIT:

Valid values


  • 111

  • 11,111

  • 11,111.0

  • 111111



The values can be entered with or without comma.
The datatype of this field is SQL MONEY, so it will handle comma's.

Answer

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));
}