前言
現在有這樣的需求
正文
使用net包
net包的方法可以判斷是否是 ip,需要注意的是 ip 分為 ipv4 和 ipv6
此方法將 v4 和 v6 一起判斷出來
address := net.ParseIP(ip)
if address == nil {
// 沒有匹配上
fmt.Println(ip)
} else {
// 匹配上
fmt.Println(address)
}
弊端: 無法獲取到是 ipv4 還是 ipv6, 因此如果需求是去除 ipv6 需要自己寫
匹配 ipv4
我們可以使用正則來匹配 ipv4
matched, err := regexp.MatchString("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}", ip)
if err != nil {
fmt.Println("ip匹配出現錯誤")
return
}
if matched { // 匹配上了
data = append(data, ip)
}