RFC1918 defines private IPv4 addresses as those that fall within any of the following ranges:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
I'm adding 127.0.0.1 to this list, for the purposes of my analysis. I know there are tried-and tested regex's to match any IPv4 address, but how would I narrow one of these to down to matching only if the address falls in one of the above ranges or in 127.0.0.1? Will be using Python.
Many thanks
In Python 3.3+ (you did not specify a version, nor why regular expressions are a requirement, so I'll put this here for completeness), you can:
import ipaddress
addr_string = # string with your IP address
try:
addr = ipaddress.IPv4Address(addr_string)
except ValueError:
raise # not an IP address
if addr.is_private:
pass # is a private address
See also: ipaddress module documentation
(?:(?:192\.)(?:(?:168\.)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))|(?:(?:10\.)(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:172\.)(?:(?:1[6-9]|2[0-9]|3[0-1])\.)(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
This regex works for fetching all private ips from a string. Demo can be found here
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.