温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java正则如何匹配IP地址

发布时间:2026-07-24 07:13:10 来源:亿速云 阅读:112 作者:小樊 栏目:编程语言

在 Java 中,可以使用 正则表达式 来匹配 IPv4 地址。下面给你几种常见、实用的写法,从简单可用严格规范


一、IPv4 地址格式回顾

IPv4 地址格式是:

xxx.xxx.xxx.xxx
  • 每段范围:0–255
  • 共 4 段,用 . 分隔

二、最简单可用的正则(推荐)

String regex = "\\d{1,3}(\\.\\d{1,3}){3}";

✅ 特点:

  • 简单
  • 能匹配大多数 IP
  • 不校验 0–255 范围

示例

String ip = "192.168.1.1";
boolean matches = ip.matches("\\d{1,3}(\\.\\d{1,3}){3}");
System.out.println(matches); // true

⚠️ 缺点:会匹配 999.999.999.999


三、严格匹配 0–255 的 IPv4 正则(常用)

String regex =
    "^(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}$";

解释

表达式 含义
25[0-5] 250–255
2[0-4]\\d 200–249
1\\d{2} 100–199
[1-9]?\\d 0–99

示例

String ip = "192.168.1.1";
boolean valid = ip.matches(
    "^(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}$"
);
System.out.println(valid); // true

四、示例:从文本中提取 IP 地址

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        String text = "服务器IP是192.168.1.1和10.0.0.2";
        Pattern p = Pattern.compile(
            "\\b(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}\\b"
        );
        Matcher m = p.matcher(text);

        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

输出:

192.168.1.1
10.0.0.2

五、IPv6(简要说明)

如果你需要匹配 IPv6,正则非常复杂,通常建议:

import java.net.InetAddress;

InetAddress.getByName(ip); // 让 JDK 校验

六、推荐做法(最佳实践)

校验 IP 最稳妥方式:

import java.net.InetAddress;

try {
    InetAddress addr = InetAddress.getByName(ip);
    System.out.println("合法IP");
} catch (Exception e) {
    System.out.println("非法IP");
}

总结

场景 推荐
快速匹配 \d{1,3}(\.\d{1,3}){3}
严格校验 0–255 正则
生产环境 InetAddress.getByName()

如果你需要 IPv6 正则CIDR 匹配(如 192.168.1.0/24),也可以继续问我。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI