Regex Tester

Regex de Endereço IP: Correspondencia IPv4 e IPv6

Padrões regex para corresponder e válidar endereços IPv4 (192.168.1.1) e IPv6. Inclui notação CIDR e detecção de redes privadas.

100% no navegador. Seus dados nunca saem do seu computador.

//gm
7 correspondências
192.168.1.1 10.0.0.255 172.16.0.1 255.255.255.0 8.8.8.8 999.999.999.999 256.1.1.1 1.2.3 0.0.0.0 127.0.0.1
Detalhes da Correspondência

Ferramentas Relacionadas

Regex de Endereço IPv4

O padrão acima corresponde corretamente apenas a endereços IPv4 válidos. Das strings de teste, corresponde a 192.168.1.1, 10.0.0.255, 172.16.0.1, 255.255.255.0, 8.8.8.8, 0.0.0.0 e 127.0.0.1. Rejeita 999.999.999.999, 256.1.1.1 e 1.2.3 (apenas tres octetos).

Detalhamento do Padrão

Cada octeto usa uma alternancia de tres vias para aplicar a faixa de 0 a 255:

Ramo de alternanciaFaixa cobertaExemplos de correspondencia
25[0-5]250 a 255250, 255
2[0-4]\d200 a 249200, 214, 249
[01]?\d\d?0 a 1990, 99, 192

A alternancia e envolvida em um grupo não capturador (?:...) e repetida tres vezes com \. entre elas usando {3}, então o octeto final repete a mêsma alternancia. Limites de palavra \b em ambas as extremidades evitam que o padrão corresponda a um endereço IP que aparece como substring de algo maior.

Por que o Padrão Ingênuo Falha

\d+\.\d+\.\d+\.\d+ é a primeira coisa que a maioria tenta. Falha em duas direções:

Corresponde a strings que não são endereços IP válidos. 999.999.999.999 corresponde porque \d+ não impoe limite ao valor numerico.

Pode produzir falsos positivos dentro de strings mais longas. Sem limites de palavra, o padrão corresponde a fragmentos parciais em strings de versão, timêstamps e números decimais.

O padrão correto baseado em alternancia lida com ambos os problemas.

Notação CIDR

Para também corresponder a blocos CIDR como 192.168.1.0/24, adicione (\/([0-9]|[1-2]\d|3[0-2]))? ao final do padrão base (antes do \b final). Issó torna o comprimento do prefixo opcional e válida que ele esta entre 0 e 32.

Padrão IPv6

Um padrão para a notação completa padrão de 8 grupos:

([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}

Issó corresponde a 2001:0db8:85a3:0000:0000:8a2e:0370:7334 mas não lida com compressão ::, que é a forma abreviada que omite grupos consecutivos de zeros. Por exemplo, ::1 (loopback) e 2001:db8::1 são ambos endereços IPv6 válidos que este padrão não captura.

Uma abordagem prática para logs: use o padrão liberal ([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4} para extrair candidatos, depois valide cada candidato com uma função de biblioteca.

Detecção de Faixas Privadas

As tres faixas IPv4 privadas definidas pelo RFC 1918:

FaixaCIDRPrefixo regex
Classe A privada10.0.0.0/8^10\.
Classe B privada172.16.0.0/12`^172.(1[6-9]
Classe C privada192.168.0.0/16^192\.168\.

A faixa Classe B (172.16 a 172.31) exige a alternancia para o segundo octeto porque não e possıvel expressar “16 a 31” com uma classe de caracteres simples. Faixas especiais adicionais a considerar: loopback (127.0.0.0/8), link-local (169.254.0.0/16) e documentação (192.0.2.0/24).

Quando Pular o Regex

Para válidar um único endereço IP enviado por um usuario, use uma função embutida da linguagem:

# Python
import ipaddress
try:
    ipaddress.ip_address("192.168.1.1")
    # válido
except ValueError:
    # inválido
// Node.js
const net = require('net');
net.isIPv4('192.168.1.1'); // true
net.isIPv4('999.1.1.1');   // false

Essas funções lidam com casos extremos que o regex ignora, incluindo zeros a esquerda (alguns analisadores interpretam 010 como octal 8) e endereços IPv6 mapeados por IPv4. O regex continua sendo a ferramenta certa para extrair endereços IP de arquivos de log, logs de acessó ou qualquer texto de formato livre onde você precise encontrar todas as ocorrencias em uma string maior.

Para gerar ou verificar hashes de endereços IP em contextos de seguranca, o Gerador de Hash no DevBento lida com algoritmos comuns sem sair do navegador.