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

De acordo com a RFC 1035, cada rótulo (a parte entre pontos) pode ter de 1 a 63 caracteres, e o domínio total pode ter até 253 caracteres (derivado do limite de 255 octetos no formato de transmissão). Note que os registradores podem impor restrições adicionais além desses limites.

Segundo a RFC 1035/1123, em um nome de host só são permitidos letras, dígitos e hífens; sublinhados não são permitidos. No entanto, sublinhados aparecem em rótulos DNS que não são nomes de host, como registros TXT ou SRV (por exemplo, `_dmarc.example.com`).

A RFC 1123 exige que cada rótulo comece e termine com um caractere alfanumérico. Permitir um hífen no início ou no fim tornaria a interpretação ambígua e poderia causar problemas de compatibilidade com implementações de DNS mais antigas.

Nomes de domínio internacionalizados (IDN) com caracteres como japonês precisam ser convertidos para Punycode (notação ASCII começando com `xn--`) antes de serem registrados no DNS. Como esta ferramenta foi projetada para validar a string já convertida para Punycode, converta primeiro o domínio não ASCII com o conversor de Punycode e depois execute aqui a verificação de sintaxe.
ツールくん

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.

→ Ver todas as curiosidades