在Java中,有InetAdress
可以进行验证。问题是它需要访问网络进行 dns 查询。如何进行验证?有主机名和 ipv4 正则表达式,但我找不到匹配 ipv6 地址的正则表达式。
IPAddress Java 库可以解析主机名、IPv4 和 IPv6 地址,而无需触发 DNS 查找。免责声明:我是该库的项目经理。
示例代码:
HostName host = new HostName(hostStr);
try {
host.validate();
if(host.isAddress()) {
System.out.println("address: " + host.asAddress());
} else {
System.out.println("host name: " + host);
}
} catch(HostNameException e) {
System.out.println(e.getMessage());
}
这不会进行 DNS 查找。 维基上的更多示例代码