I’m currently using a regex for detecting valid floating point numbers which looks like this:
/^[0-9]{1,10}(.d{0,3})?$/
I am able to match the following values as expect:
0
0.
0.1
0.12
0.123
I do however need to be able to validate and match the following inputs as these values can be parsed as a Number type in JavaScript.
.1
.12
.123
I’ve looked at optional first character matching but so far I haven’t been able to come up with a tangible solution. I think the fact that it’s optional makes it tricky to implement
2
Answers
To match valid floating-point numbers, including those you provided (like .1, .12, .123), you can use the following regular expression:
EXPLANATION:
your original regex correctly matches numbers with 1 to 10 digits before the decimal point and 0 to 3 digits after the decimal. However, it misses one key case: numbers that start with a decimal point (e.g., .1, .12, .123).
To cover this missing case, I made two changes:
1 – Made the digits before the decimal optional: I wrapped the part that matches digits before the decimal in a non-capturing group
(?: ... )?
and made it optional with?
. This allows the regex to match numbers that don’t have digits before the decimal, such as .1, .12, and .123.2 – Added an alternative to match numbers starting with a decimal: I added an alternative pattern
(.d{1,3})
after a|
(OR) operator to explicitly match cases where the number starts with a decimal point and has 1 to 3 digits after it. This ensures that numbers like .1, .12, and .123 are valid matches.To match floating point numbers, including those with a leading decimal point, you can use the following regular expression:
It handles cases with optional leading digits, optional decimal points, and digits following the decimal point.