While searching for ranges in regular expressions I found this page: http://utilitymill.com/utility/Regex_For_Range/42 The page generates regular expressions for ranges and works really nice. You want for example a regex for the range 12 to 389 and the page generates this for you:
^0*(1[2-9]|[2-9][0-9]|[12][0-9]{2}|3[0-8][0-9])$
Unfortunately negative values are not allowed. But I needed to have an regex for the range between -128 and 127. If you also need something like this to define types like short or byte, there is a nice trick.
- generate the regex from 0 to 128: ^([0-9]{1,2}|1[01][0-9]|12[0-8])$
- add an optional – in the beginning: ^[-]?([0-9]{1,2}|1[01][0-9]|12[0-8])$
- exclude 128: ^(?!128)[-]?([0-9]{1,2}|1[01][0-9]|12[0-8])$
And there you have it, a range regex for values from -128 to 127.