-
Notifications
You must be signed in to change notification settings - Fork 361
Closed
Description
推荐一个leecode上的大佬写的.
func isIPV4(IP string) bool {
arr := strings.Split(IP, ".")
if len(arr) != 4 {
return false
}
for _, elem := range arr {
if elem == "" {
return false
}
if len(elem) > 1 && elem[0] == '0' {
return false
}
num := 0
for _, c := range elem {
if c >= '0' && c <= '9' {
num = num*10 + int(c - '0')
}else{
return false
}
}
if num > 255 {
return false
}
}
return true
}
//IPV6地址的判断:
//1. 用“:”分割字符串,若长度不等于8,则return Neither
//2. 遍历每一个数组的每一个元素,若元素的长度大于4,则return Neither
//3. 判断每一个元素的字符,若出现非0-9,A-F的字符,则return Neither
func isIPV6(IP string) bool {
IP = strings.ToUpper(IP)
arr := strings.Split(IP, ":")
if len(arr) != 8 {
return false
}
for _, elem := range arr {
if elem == "" || len(elem) > 4{
return false
}
for _, c := range elem {
if (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'){
continue
}else{
return false
}
}
}
return true
}
Metadata
Metadata
Assignees
Labels
No labels