用于匹配 IP 地址的正则表达式 [已关闭]

2022-08-30 11:17:44

我是正则表达式的新手,我想使用函数来查找字符串是否是IP地址。preg_match

例如

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

应返回 true。那么,应该是什么呢?$regex


答案 1

当您不需要正则表达式时,不要使用正则表达式:)

$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位长,互联网很受欢迎:)


答案 2
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/

应该为您的示例执行操作(它确实包含一个不是IP地址的字符串)。当然,它只是一个IPv4地址。


推荐