I have an application which must warn the user upon use of localhost
, 127.0.0.1
, ::1
, or any loopback address (the target host is used for a database-to-database connection not necessarily inside of the environment of the application). This is made complicated because addresses like the following...
127.1
127.0.01
127.0000.0000.1
127.0.0.254
127.63.31.15
127.255.255.254
0::1
0000::0001
0000:0:0000::01
0000:0000:0000:0000:0000:0000:0000:0001
...will parse properly by the consuming code, and will resolve to loopback.
What is a regular expression which will match any permutation of the IPv4 and IPv6 loopback addresses?
IPv4 reserves all addresses in the range 127.0. 0.0 up to 127.255. 255.255 for use in loopback testing, although 127.0. 0.1 is (by convention) the loopback address used in almost all cases.
// this is the regex to validate an IP address. = zeroTo255 + "\\." + zeroTo255 + "\\."
The IP address 127.0. 0.1 is called a loopback address. Packets sent to this address never reach the network but are looped through the network interface card only. This can be used for diagnostic purposes to verify that the internal path through the TCP/IP protocols is working.
IPv4 network standards reserve the entire address block 127.0. 0.0/8 (more than 16 million addresses) for loopback purposes. That means any packet sent to any of those addresses is looped back.
After a short time fiddling around in RegexBuddy (which is a truly magnificent tool for test-driven RegEx construction), I have come up with this:
^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$
The string "localhost"
localhost
LOCALHOST
These permutations of the IPv4 loopback address
127.0.0.1
127.0.0.001
127.0.00.1
127.00.0.1
127.000.000.001
127.0000.0000.1
127.0.01
127.1
127.001
127.0.0.254
127.63.31.15
127.255.255.254
These permutations of the IPv6 loopback address
0:0:0:0:0:0:0:1
0000:0000:0000:0000:0000:0000:0000:0001
::1
0::1
0:0:0::1
0000::0001
0000:0:0000::0001
0000:0:0000::1
0::0:1
A valid server name
servername
subdomain.domain.tld
These valid IPv4 addresses
192.168.0.1
10.1.1.123
These valid IPv6 addresses
0001::1
dead:beef::1
::dead:beef:1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With