IPv4地址相对容易验证:它们有4个八位字节,以数字分隔。每个八位位组都是0到255之间的整数。
IPv6地址难以验证。它们具有8个十六进制,每个均具有4个十六进制数字,并用冒号分隔。IPv6地址还具有缩短规则,可以删除每个附件中的前导零(每个附件中至少保留一个零)。另外,一个或多个连续的:0:附件可以缩短为::,但在每个IPv6地址中只能重复一次。
如何在Swift中验证IPv4和IPv6地址?
对于带有String构造函数的IPv4Address和IPv6Address结构,Network框架有一个失败的初始化程序。简单地测试一下是否可以用字符串初始化Struct就足以验证地址。
这对于具有不平凡的缩短规则的长格式的IPv6地址特别有用。
import Network
let addresses = ["1.2.33.44","1.265.33.33","2001:db8::35:44","2001:db8::33::44"]
for address in addresses {
if let _ = IPv4Address(address) {
print("address \(address) is a valid IPv4 address")
} else if let _ = IPv6Address(address) {
print("address \(address) is a valid IPv6 address")
} else {
print("address \(address) is neither an IPv4 address nor an IPv6 address")
}
}
输出:
address 1.2.33.44 is a valid IPv4 address
address 1.265.33.33 is neither an IPv4 address nor an IPv6 address
address 2001:db8::35:44 is a valid IPv6 address
address 2001:db8::33::44 is neither an IPv4 address nor an IPv6 address
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句