php正则匹配IP网段开头是否符合要求

直接上代码:

$pattern = '/^(61\.140|219\.136)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/';
$ip = "61.141.123.5"; // 替换为实际的IP地址
if (preg_match($pattern, $ip)) {
    echo "IP地址符合要求";
} else {
    echo "IP地址不符合要求";
}


解释:

^(61\.140|219\.136):这一部分匹配以 "61.140" 或 "219.136" 开头的IP地址。

\.:匹配实际的点字符(需要使用反斜杠进行转义)。

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):这一部分匹配IP地址的每个分段,确保它们在0到255范围内。25[0-5]:匹配250到255之间的数字。

2[0-4][0-9]:匹配200到249之间的数字。

[01]?[0-9][0-9]?:匹配0到199之间的数字,允许0、1或2位数字。

$:表示匹配字符串的结尾。

因此,这个正则表达式会匹配以 "61.140" 或 "219.136" 开头的IP地址,并确保每个分段的值在0到255范围内。

你提供的IP地址是 "61.141.123.5"。由于这个IP地址的开头不是 "61.140" 或 "219.136",所以它不符合要求。因此,代码会输出 "IP地址不符合要求"。


评论/留言

精选留言
  • 用户头像

    ****.****.52.215 2023-08-22

    感谢分享,找了多个都没有实现效果,这个可以判断是否ip有效,还可以匹配开头