I need a regular expression that should validate decimal point as well as range. Totally 3 number should be present including dot and the value must be greater than 0.0. That means the valid range is from 0.1 to 7.0.
I used the following regex: ^\\d{1,1}(\\.\\d{1,2})?$
It works fine except for the range validation. What do I need to change?
Regexes are notoriously bad at validating number ranges. But it's possible. You have to break down the number range into the expected textual representations of those numbers:
^ # Start of string
(?: # Either match...
7(?:\.0)? # 7.0 (or 7)
| # or
[1-6](?:\.[0-9])? # 1.0-6.9 (or 1-6)
| # or
0?\.[1-9] # 0.1-0.9 (or .1-.9)
) # End of alternation
$ # End of string
As a one-liner:
^(?:7(?:\.0)?|[1-6](?:\.[0-9])?|0?\.[1-9])$
In Java:
Pattern regex = Pattern.compile("^(?:7(?:\\.0)?|[1-6](?:\\.[0-9])?|0?\\.[1-9])$");
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