RegEx: How can I match all numbers greater than 49?
I'm somewhat new to regular expressions and am writing validation for a quantity field where regular expressions need to be used.
How can I match all numbers greater than or equal to 50?
I tried
[5-9][0-9]+
but that only matches 50-99. Is there a simple way to match all possible numbers greater than 49? (only integers are used)
The fact that the first digit has to be in the range 5-9
only applies in case of two digits. So, check for that in the case of 2 digits, and allow any more digits directly:
^([5-9]\d|\d{3,})$
This regexp has beginning/ending anchors to make sure you're checking all digits, and the string actually represents a number. The |
means "or", so either [5-9]\d
or any number with 3 or more digits. \d
is simply a shortcut for [0-9]
.
Edit: To disallow numbers like 001
:
^([5-9]\d|[1-9]\d{2,})$
This forces the first digit to be not a zero in the case of 3 or more digits.
I know there is already a good answer posted, but it won't allow leading zeros. And I don't have enough reputation to leave a comment, so... Here's my solution allowing leading zeros:
First I match the numbers 50 through 99 (with possible leading zeros):
0*[5-9]\d
Then match numbers of 100 and above (also with leading zeros):
0*[1-9]\d{2,}
Add them together with an "or" and wrap it up to match the whole sentence:
^0*([1-9]\d{2,}|[5-9]\d)$
That's it!