Validador de nomes de domínio (verificação de conformidade RFC)
Verifica se um nome de domínio está em conformidade com as regras de sintaxe da RFC 1035/1123. Valida individualmente o comprimento de cada rótulo, o comprimento total, os caracteres permitidos e a posição dos hífens, mostrando o motivo específico de qualquer violação.
Dicas de uso
- Esta ferramenta valida de acordo com as regras de sintaxe definidas na RFC 1035/1123; ela não verifica se o domínio está de fato registrado ou se pode ser resolvido via DNS.
- Antes de escrever sua própria expressão regular de validação para um formulário, teste esta ferramenta com os casos extremos (exatamente 63 caracteres, posição de hífen etc.) para garantir que sua implementação os cubra.
- Entradas com caracteres não ASCII, como nomes de domínio em japonês, apenas fazem com que a verificação do conjunto de caracteres seja ignorada. Converta-os primeiro para a notação `xn--` com o conversor de Punycode para uma verificação totalmente precisa.
- Um TLD totalmente numérico quase nunca ocorre na prática, mas é incluído intencionalmente para detectar entradas que poderiam ser confundidas com um endereço IP durante a validação de formulários.
- O mesmo conjunto de regras pode ser aplicado à parte de um endereço de e-mail após o símbolo `@`, servindo também como uma verificação simples do domínio do e-mail.
Perguntas frequentes
Curiosidade — Por que a validação de nomes de domínio é reinventada tantas vezes
A verificação de sintaxe de um nome de domínio parece algo que deveria ser resolvido com uma única expressão regular simples, mas é uma área em que muitos desenvolvedores tropeçaram em suas próprias implementações. Da validação de e-mails em formulários, passando pela análise de nomes de host em arquivos de configuração, até a validação de URLs em APIs, "strings parecidas com domínios" aparecem em toda parte, mas implementações que refletem com precisão as regras oficiais da RFC 1035 (1987) e da RFC 1123 (1989) são surpreendentemente raras.
O limite de comprimento em dois níveis — 63 caracteres por rótulo, 253 no total — vem diretamente do design do formato de transmissão do DNS (o formato binário efetivamente trocado pela rede). Cada rótulo é precedido por um byte que indica seu comprimento, e esse byte é restrito ao intervalo de 0 a 63 (o valor máximo representável em 6 bits), que é o motivo direto do limite de comprimento do rótulo.
A convenção de que um TLD não deve ser totalmente numérico também tem uma história interessante. Não é uma regra exigida por nenhuma RFC, mas sim uma prática de implementação amplamente adotada para distinguir nomes de domínio de endereços IPv4 (sequências de dígitos e pontos). Muitos resolvedores de DNS e navegadores usam essa convenção para decidir que uma string como 192.168.1.1 deve ser tratada como um endereço IP, e não como um nome de domínio.