Regex to match an IP address

ibrahim picture ibrahim · May 3, 2011 · Viewed 66.5k times · Source

I am newbie with regex and I want to use preg_match function to find if a string is an IP address.

For example,

$string = "10.0.0.1";
preg_match($regex, $string);

should return true. So, what $regex should be?

Answer

alex picture alex · May 3, 2011

Don't use a regex when you don't need to :)

$valid = filter_var($string, FILTER_VALIDATE_IP);

Though if you really do want a regex...

$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);

The regex however will only validate the format, the max for any octet is the max for an unsigned byte, or 255.

This is why IPv6 is necessary - an IPv4 address is only 32bits long and the internet is popular :)