a private IPv4 range
Matches a private IPv4 range. It is anchored at both ends, so the whole string has to match. There are 2 capture groups.
Pattern
/^(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3})$/- Match scope
- the whole string
- Capture groups
- 2
- What it catches in the first example
- 10.0.0.1
Try it yourself
Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.
10.0.0.1
1 match
Examples that match
- 10.0.0.1
- 192.168.1.1
- 172.20.5.4
Examples that do not match
- 8.8.8.8
- 172.15.0.1
- 172.32.0.1
Other expressions in this group
^([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?::([0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*)?$a compressed IPv6 address^\d{3}-\d{2}-\d{5}$a Korean business registration number^[a-z]+\/[a-zA-Z0-9][a-zA-Z0-9.+-]*$a MIME type^data:[a-z]+\/[a-z0-9.+-]+;base64,[A-Za-z0-9+/]+=*$a base64 data: URI^(\S+\s+){4}\S+$a five-field cron expression^[A-Za-z]:\\.*$a Windows drive path^[\^~]?\d+\.\d+\.\d+$a semver range with ^ or ~^[A-Z][a-zA-Z0-9]*$a PascalCase nameHow to read this
- With ^ and $ around it, the whole string must match; without them the match can sit anywhere. Always anchor an expression you use for validation.
- Round brackets ( ) capture what they wrap. When you only need grouping, write (?: ) so the numbering of later groups does not shift.
- Every expression here is checked against its examples. Even so, "looks like an email" and "is a real inbox" remain different questions.
- Nested open-ended repeats such as (a+)+ can blow up on certain inputs. Look for that shape before pasting someone else’s expression into your code.
Frequently asked questions
Q. What is the regex for a private IPv4 range?
^(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|3[01])\.\d{1,3}\.\d{1,3})$.
Q. Which strings match?
Text like 10.0.0.1 matches; text like 8.8.8.8 does not.
Q. Does the whole string have to match?
Yes. It is wrapped in ^ and $, so nothing but a full match passes.
Q. How do I use what it caught?
There are 2 capture groups, so you can read them from match[1] onwards.