在 Java 中,可以使用 正则表达式 来匹配 IPv4 地址。下面给你几种常见、实用的写法,从简单可用到严格规范。
IPv4 地址格式是:
xxx.xxx.xxx.xxx
0–255. 分隔String regex = "\\d{1,3}(\\.\\d{1,3}){3}";
✅ 特点:
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
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
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,正则非常复杂,通常建议:
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),也可以继续问我。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。