Validador de nombres de dominio (comprobación de conformidad RFC)

Comprueba si un nombre de dominio cumple las reglas de sintaxis de RFC 1035/1123. Valida individualmente la longitud de cada etiqueta, la longitud total, los caracteres permitidos y la posición de los guiones, mostrando el motivo concreto de cualquier infracción.

Consejos de uso

  • Esta herramienta valida según las reglas de sintaxis definidas en RFC 1035/1123; no comprueba si el dominio está realmente registrado ni si se puede resolver mediante DNS.
  • Antes de escribir tu propia expresión regular de validación para un formulario, prueba esta herramienta con los casos límite (exactamente 63 caracteres, posición de guiones, etc.) para asegurarte de que tu implementación los cubre.
  • Las entradas con caracteres no ASCII, como los nombres de dominio en japonés, solo omiten la comprobación del conjunto de caracteres. Conviértelos primero a notación `xn--` con el conversor de Punycode para una comprobación totalmente precisa.
  • Un TLD completamente numérico casi nunca ocurre en la práctica, pero se incluye deliberadamente para detectar entradas que podrían confundirse con una dirección IP durante la validación de formularios.
  • El mismo conjunto de reglas puede aplicarse a la parte de una dirección de correo electrónico posterior al símbolo `@`, por lo que también sirve como una comprobación ligera del dominio del correo.

Preguntas frecuentes

Según RFC 1035, cada etiqueta (la parte entre puntos) puede tener de 1 a 63 caracteres, y el dominio total puede tener hasta 253 caracteres (derivado del límite de 255 octetos en el formato de transmisión). Ten en cuenta que los registradores pueden imponer restricciones adicionales por encima de estos límites.

Según RFC 1035/1123, en un nombre de host solo se permiten letras, dígitos y guiones; los guiones bajos no están permitidos. Sin embargo, sí aparecen en etiquetas DNS que no son nombres de host, como los registros TXT o SRV (por ejemplo, `_dmarc.example.com`).

RFC 1123 exige que cada etiqueta empiece y termine con un carácter alfanumérico. Permitir un guion al inicio o al final haría la interpretación ambigua y podría generar problemas de compatibilidad con implementaciones de DNS antiguas.

Los nombres de dominio internacionalizados (IDN) con caracteres como el japonés deben convertirse a Punycode (notación ASCII que empieza por `xn--`) antes de registrarse en el DNS. Como esta herramienta está diseñada para validar la cadena ya convertida a Punycode, conviene convertir primero el dominio no ASCII con el conversor de Punycode y luego ejecutar aquí la comprobación de sintaxis.
ツールくん

A propósito — Por qué la validación de nombres de dominio se reinventa una y otra vez

Comprobar la sintaxis de un nombre de dominio parece que debería resolverse con una única expresión regular sencilla, y sin embargo es un área en la que muchos desarrolladores han tropezado con sus propias implementaciones. Desde la validación de correos electrónicos en formularios, pasando por el análisis de nombres de host en archivos de configuración, hasta la validación de URL en APIs, las «cadenas parecidas a dominios» aparecen por todas partes, pero las implementaciones que reflejan con precisión las reglas oficiales de RFC 1035 (1987) y RFC 1123 (1989) son sorprendentemente escasas.

El límite de longitud en dos niveles —63 caracteres por etiqueta, 253 en total— proviene directamente del diseño del formato de transmisión del DNS (el formato binario que realmente se intercambia por la red). Cada etiqueta va precedida de un byte que indica su longitud, y ese byte está restringido a un rango de 0 a 63 (el valor máximo representable con 6 bits), lo que es la razón directa del límite de longitud de etiqueta.

La convención de que un TLD no debe ser completamente numérico tiene también una historia interesante. No es una regla exigida por ningún RFC, sino más bien una práctica de implementación ampliamente adoptada para distinguir los nombres de dominio de las direcciones IPv4 (secuencias de dígitos y puntos). Muchos resolutores de DNS y navegadores usan esta convención para decidir que una cadena como 192.168.1.1 debe tratarse como una dirección IP y no como un nombre de dominio.

→ Ver todas las curiosidades