我使用了IPAddressUtil.isIPv6LiteralAddress (ipAddress)
方法来验证 IPv6,但是对于 IPV6 的 ipv6-address/prefix-length 格式(格式在 RFC 4291 2.3 节中提到),此方法失败。
谁能知道任何验证“ipv6-address/prefix-length”格式的 validator ?
IPV6的法律表述
- ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
- 2001:DB8:0:0:8:800:200C:417A
- FF01:0:0:0:0:0:0:101
- 0:0:0:0:0:0:0:1
- 0:0:0:0:0:0:0:0
- 2001:DB8::8:800:200C:417A
- FF01::101
- ::1
- ::
- 0:0:0:0:0:0:13.1.68.3
- 0:0:0:0:0:FFFF:129.144.52.38
- ::13.1.68.3
- FFFF:129.144.52.38
- 2001:0DB8:0000:CD30:0000:0000:0000:0000/60
- 2001:0DB8::CD30:0:0:0:0/60
- 2001:0DB8:0:CD30::/60
不是 IPV6 的合法代表
- 2001:0DB8:0:CD3/60
- 2001:0DB8::CD30/60
- 2001:0DB8::CD3/60
最佳答案
您可以使用 Guava 库,特别是使用 com.google.common.net.InetAddresses
类,调用 isInetAddress()
.
isInetAddress
public static boolean isInetAddress(String ipString)
如果提供的字符串是有效的 IP 字符串文字,则返回 true,否则返回 false。
参数:ipString
- 要评估为 IP 字符串文字的字符串
返回:true
如果参数是有效的 IP 字符串文字
关于java - IPv6 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963199/