Issue: I'm trying to achieve the following results for the test cases using a Regex pattern on a input type text html.
Looking to meet the following criteria's:
Numeric only - no alpha or special characters allowed
No spaces between digits
two digits after decimal is allowed
Cannot be zero (0)
1st digit of the limit can not be zero (ex:01200)
testPattern: RegExp = /(?=.*?\d)^\$?(([1-9]\d{0,2}(,\d{3})*)|\d+)?(\.\d{1,2})?$/;
Expected Results:
TIA
You could assert not starting with a zero followed by only digits, or only dots, comma's and zero's till the end of the string.
^(?![0,.]*$|0\d*$)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$
Explanation
^ Start of string(?! Negative lookahead
[0,.]*$ Match optional zeroes , or . to the end of string| Or0\d*$ Match 0 and optional digits to the end of string) Close lookahead\d{1,3} Match 1-3 digits(?:,\d{3})* Optionally repeat matching , and 3 digits(?:\.\d{1,2})? Optionally match . and 1-2 digits$ End of stringconst regex = /^(?![0,.]*$|0\d*$)\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$/;
[
"0",
"012",
"0.00",
"0.0",
"0.",
"00122",
"0.12",
"0.01",
"1,234.00",
"1.00",
"123,456",
"1.23"
].forEach(s => console.log(`${s} --> ${regex.test(s)}`));