go判斷字符串是否是IP地址


前言

現在有這樣的需求

正文

使用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)
		}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM