golang 校验是否为 ipv4/ipv6地址/域名
校验请求字段是否是 IPv4、IPv6地址、域名。
net.ParseIP: 校验是否为 IP地址
func net.ParseIP(s string) net.IP
ParseIP parses s as an IP address, returning the result. The string s can be in IPv4 dotted decimal ("192.0.2.1"), IPv6 ("2001:db8::68"), or IPv4-mapped IPv6 ("::ffff:192.0.2.1") form. If s is not a valid textual representation of an IP address, ParseIP returns nil.
缺点:只能校验是否为 IP 地址,不能区分IP 版本。
import (
"net"
)
if net.ParseIP(userIP) == nil {
// 如果不是 IP 的分支处理
}
1
2
3
4
5
6
7
2
3
4
5
6
7
govalidator: 校验是否为 IPv4 或 IPv6 地址
func IsIPv4(str string) bool
IsIPv4 checks if the string is an IP version 4.
func IsIPv6(str string) bool
IsIPv6 checks if the string is an IP version 6.
import (
"github.com/asaskevich/govalidator"
)
if govalidator.IsIPv4(userIP) == true {
// 如果是IPv4 的分支处理
}
if govalidator.IsIPv6(userIP) == true {
// 如果是IPv6 的分支处理
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
govalidator 校验的类型特别多,具体可以查看其 GitHub 链接。
校验是否为域名
import (
isd "github.com/jbenet/go-is-domain"
)
if isd.IsDomain(userIP) == true {
// 如果是域名的分支处理
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
func IsDomain(s string) bool
IsDomain returns whether given string is a domain. It first checks the TLD, and then uses a regular expression.