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

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

govalidator 校验的类型特别多,具体可以查看其 GitHub 链接。

校验是否为域名

import (	
    isd "github.com/jbenet/go-is-domain"
)

if isd.IsDomain(userIP) == true {
    // 如果是域名的分支处理
}

1
2
3
4
5
6
7
8

官方文档open in new window

func IsDomain(s string) bool

IsDomain returns whether given string is a domain. It first checks the TLD, and then uses a regular expression.

访客IP ,您的网络 访问优先

本站是个人博客,书写大数据、数据科学等领域的原创学习记录,转载请注明出处

本站运行于 腾讯云 腾讯云