Continue a criar, acelere o crescimento! Este é o 5º dia da minha participação no "Nuggets Daily New Plan · June Update Challenge", clique para ver os detalhes do evento
Dada uma string queryIP
. Se for um endereço IPv4 válido, devolva "IPv4"
-o; se for um endereço IPv6 válido, devolva "IPv6"
-o; se não for um endereço IP do tipo acima, devolva-o "Neither"
.
Um endereço IPv4 válido é o “x1.x2.x3.x4”
endereço IP do formulário. onde 0 <= xi <= 255
e xi
não pode conter zeros à esquerda. Por exemplo: “192.168.1.1”
, “192.168.1.0”
é um endereço IPv4 válido, “192.168.01.1”
é um endereço IPv4 inválido; “192.168.1.00”
, “[email protected]”
é um endereço IPv4 inválido.
Um endereço IPv6 válido é um “x1:x2:x3:x4:x5:x6:x7:x8”
endereço IP no formato, onde:
1 <= xi.length <= 4
xi
é uma string hexadecimal que pode conter números, letras minúsculas em inglês ('a'
to'f'
) e letras maiúsculas em inglês ('A'
to'F'
).- Zeros à esquerda são permitidos em
xi
.
Por exemplo , "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
e "2001:db8:85a3:0:0:8A2E:0370:7334"
é um endereço IPv6 válido, enquanto "2001:0db8:85a3::8A2E:037j:7334"
e "02001:0db8:85a3:0000:0000:8a2e:0370:7334"
é um endereço IPv6 inválido.
Exemplo 1:
输入: queryIP = "172.16.254.1"
输出: "IPv4"
解释: 有效的 IPv4 地址,返回 "IPv4"
复制代码
Exemplo 2:
输入: queryIP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出: "IPv6"
解释: 有效的 IPv6 地址,返回 "IPv6"
复制代码
Exemplo 3:
输入: queryIP = "256.256.256.256"
输出: "Neither"
解释: 既不是 IPv4 地址,又不是 IPv6 地址
复制代码
dica:
queryIP
Consiste apenas em letras, números, caracteres'.'
e':'
.
Ideias para resolver problemas
O personagem dado nesta questão pode ter as 3 situações a seguir:
- Os caracteres fornecidos são endereços IPv4 válidos
- Os caracteres fornecidos são endereços IPv6 válidos
- O caractere fornecido não é um endereço IPv4 válido nem um endereço IPv6 válido
Portanto, só é necessário julgar se é um endereço IP válido de acordo com as condições dadas.
Código
var validIPAddress = function(queryIP) {
const v4Arr = queryIP.split('.')
const v4Reg = /^[0-9]{1,3}$/g
const v6Reg = /^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}$/g
if(v4Arr.length === 4){
for(let i = 0;i<4;i++){
let item = v4Arr[i]
v4Reg.lastIndex = 0
if(!v4Reg.test(item) || (item.length>1 && item[0]==='0') || item*1>255){
return 'Neither'
}
}
return 'IPv4'
}
if(v6Reg.test(queryIP)){
return 'IPv6'
}
return 'Neither'
}
复制代码
Até agora, concluímos o endereço IP leetcode-468-verify
Se você tiver alguma dúvida ou sugestão, por favor deixe uma mensagem para discutir!