如何使用正则表达式查找文本是否具有IP地址?

时间:2012-11-21 21:43:29

标签: php regex

  

可能重复:
  Regexp to check if an IP is valid

我对正则表达式并不擅长并且我搜索了这个,但我能找到的只是匹配在数字前后有空格的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])$

并提前致谢。

1 个答案:

答案 0 :(得分: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必须遵循的所有其他规则,但这更加直截了当。