1

可能重复:
正则表达式检查 IP 是否有效

我不擅长正则表达式,我搜索了这个,但我能找到的只是匹配在数字前后有空格的 IP 地址,例如它只匹配这个:

Text before 192.168.1.1 Text after

我怎样才能让它匹配任何IP地址,我不想要IP我只想知道文本是否有IP,例如我也希望它匹配:

text before192.168.1.1text after

我试过这些:

\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

并提前感谢。

4

1 回答 1

5
if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $string, $match)) {
    if (filter_var($match[0], FILTER_VALIDATE_IP)) {
        // we have an IP
    }
}

是的,您可以构造一个直接匹配 0-255 的正则表达式以及 IP 必须遵循的所有其他规则,但这更直接。

于 2012-11-21T21:48:50.327 回答