有时Golang是需要判断IPv4的IP是否合法的,搜了下,用以下方式是可以实现判定的。

1.对正则表达式进行编译,以得到一个优化的Regexp结构体,然后再用优化后的对象进行匹配:

package main

import "regexp"
import "fmt"

func main() {
str := "1.2.3.4"
ipReg := `^((0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])\.){3}(0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])$`
r, _ := regexp.Compile(ipReg)
match := r.MatchString(str)
if match {
fmt.Printf("%s is a legal ipv4 address\n", str)
} else {
fmt.Printf("%s is not a legal ipv4 address\n", str)
}
}

2.使用net包里面的ParseIP方法:

package main

import "net"
import "fmt"

func main() {
str := "1.2.3.4"
address := net.ParseIP(str)
if address != nil {
fmt.Printf("%s is a legal ipv4 address\n", str)
} else {
fmt.Printf("%s is not a legal ipv4 address\n", str)
}
}

建议:net包中的ParseIP方法在判断IPv4地址的合法性上具有压倒性的优势。

以上代码完整摘录自:https://blog.csdn.net/choumin/article/details/90177007

Related Posts: Golang正则表达式判断IPv4地址是否合法 :

avatar