preg_match
函数查找字符串是否为IP地址。 例如,
$string = "10.0.0.1";
preg_match($regex, $string);
应返回true。那么,$regex
应该是什么?
$valid = filter_var($string, FILTER_VALIDATE_IP);
尽管您确实想要正则表达式...
$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);
然而,正则表达式仅会验证格式,任何八位位组的最大值是无符号字节或255
的最大值。这就是为什么需要IPv6的原因-IPv4地址只有32位长,并且互联网很流行:)
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
应该为您的示例做(它确实包含IP地址not的字符串)。当然,这只是一个IPv4地址。
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
这将检查完美范围,包括范围是否大于4中的255。