我对正则表达式并不擅长并且我搜索了这个,但我能找到的只是匹配在数字前后有空格的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])$
并提前致谢。
答案 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必须遵循的所有其他规则,但这更加直截了当。