我java.net.Inet6Address用来验证输入字符串是否是有效的IPv6地址.
这是我的代码片段:
public static boolean isValidIPv6ddress(String address) {
if (address.isEmpty()) {
return false;
}
try {
Object res = InetAddress.getByName(address);
return res instanceof Inet6Address;
} catch (final UnknownHostException ex) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,true即使对于以下无效的输入,上述方法也会返回:
System.out.println(isValidIPv6ddress("2A00:17C8:50C:0000:0000:0000:0000:00001"));
System.out.println(isValidIPv6ddress("2A00:17C8:50C:0000:0000:00000000000000:0000:00001"));
System.out.println(isValidIPv6ddress("2A00:17C8:50C:00001235:0000:00000000000000:0000:00001"));
Run Code Online (Sandbox Code Playgroud)
API 会忽略前导零吗?或者API中是否存在错误?