Saltar al contenido

¿Qué es una expresión regular que coincidirá con un nombre de dominio válido sin un subdominio?

Solución:

Sé que esta es una publicación un poco antigua, pero a todas las expresiones regulares aquí les falta un componente muy importante: el soporte para nombres de dominio IDN.

Los nombres de dominio IDN comienzan con xn--. Permiten caracteres UTF-8 extendidos en nombres de dominio. Por ejemplo, ¿sabía que “♡ .com” es un nombre de dominio válido? ¡Sí, “love heart dot com”! Para validar el nombre de dominio, debe dejar que http://xn--c6h.com/ pase la validación.

Tenga en cuenta que para usar esta expresión regular, deberá convertir el dominio a minúsculas y también usar una biblioteca IDN para asegurarse de codificar los nombres de dominio en ACE (también conocido como “Codificación compatible con ASCII”). Una buena biblioteca es GNU-Libidn.

idn (1) es la interfaz de línea de comandos para la biblioteca de nombres de dominio internacionalizados. El siguiente ejemplo convierte el nombre de host en UTF-8 en codificación ACE. La URL resultante https: //nic.xn--flw351e/ se puede utilizar como equivalente codificado en ACE de https: // nic. 谷 歌 /.

  $ idn --quiet -a nic.谷歌
  nic.xn--flw351e

Esta expresión regular mágica debería cubrir la mayoría dominios (aunque estoy seguro de que hay muchos casos extremos válidos que me he perdido):

^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}.(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30}.[a-z]{2,})$

Al elegir una expresión regular de validación de dominio, debería ver si el dominio coincide con lo siguiente:

  1. xn--stackoverflow.com
  2. stackoverflow.xn – com
  3. stackoverflow.co.uk

Si estos tres dominios no pasan, es posible que su expresión regular no permita dominios legítimos.

Consulte la página de soporte de nombres de dominio internacionalizados de Oracle’s International Language Environment Guide para obtener más información.

No dude en probar la expresión regular aquí: http://www.regexr.com/3abjr

ICANN mantiene una lista de tlds que se han delegado que se puede utilizar para ver algunos ejemplos de dominios IDN.


Editar:

 ^(((?!-))(xn--|_{1,1})?[a-z0-9-]{0,61}[a-z0-9]{1,1}.)*(xn--)?([a-z0-9][a-z0-9-]{0,60}|[a-z0-9-]{1,30}.[a-z]{2,})$

Esta expresión regular detendrá los dominios que tienen ‘-‘ al final de un nombre de host como marcados como válidos. Además, permite subdominios ilimitados.

Bueno es muy claro un poco más astuto de lo que parece (ver comentarios), dados sus requisitos específicos:

/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9].[a-zA-Z]{2,}$/

Pero tenga en cuenta que esto rechazará muchos dominios válidos.

Mi expresión regular es la siguiente:

^[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}.([a-zA-Z]{1,6}|[a-zA-Z0-9-]{1,30}.[a-zA-Z]{2,3})$

está bien para yo.oh1.me y para wow.british-library.uk

UPD

Aquí está la regla actualizada

^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9])).([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})$

Visualización de expresiones regulares

https://www.debuggex.com/r/y4Xe_hDVO11bv1DV

ahora busca - o _ al principio o al final de la etiqueta del dominio.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *