6.5. Numbers Within a Certain Range
Problem
You want to match an integer number within a certain range of numbers. You want the regular expression to specify the range accurately, rather than just limiting the number of digits.
Solution
1 to 12 (hour or month):
^(1[0-2]|[1-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
1 to 24 (hour):
^(2[0-4]|1[0-9]|[1-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
1 to 31 (day of the month):
^(3[01]|[12][0-9]|[1-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
1 to 53 (week of the year):
^(5[0-3]|[1-4][0-9]|[1-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
0 to 59 (minute or second):
^[1-5]?[0-9]$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
0 to 100 (percentage):
^(100|[1-9]?[0-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
1 to 100:
^(100|[1-9][0-9]?)$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
32 to 126 (printable ASCII codes):
^(12[0-6]|1[01][0-9]|[4-9][0-9]|3[2-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
0 to 127 (nonnegative signed byte):
^(12[0-7]|1[01][0-9]|[1-9]?[0-9])$
Regex options: None |
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby |
–128 to 127 (signed byte):
^(12[0-7]|1[01][0-9]|[1-9]?[0-9]|-(12[0-8]|1[01][0-9]|[1-9]?[0-9]))$ ...
Get Regular Expressions Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.