Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regex number range 1-17

Can someone tell me how to match a number between 1-17 with a regex:

I tried [1-9]|1[0-7] but it matches 8 in the 18 for example because of the first part.

Any ideas? I don't want to have leading zeros.

edited:

The problem is I'm trying to validate a UK postcode like to start with:

KW1-17 (it could be KW1, KW2 up to KW17) ... and this is just the outward part. The postcode may be KW15 1BM or KW151BM so I can't just use anchors to match the whole string ... it becomes more complicated.

like image 894
Ilian Andreev Avatar asked Dec 26 '22 21:12

Ilian Andreev


1 Answers

You need to put anchors around the regex or it will match substrings:

^(?:[2-9]|1[0-7]?)$

I've also taken the liberty to make your regex a bit more efficient:

Comparison of two regexes

like image 143
Tim Pietzcker Avatar answered Dec 29 '22 09:12

Tim Pietzcker