No he hecho muchas pruebas al respecto, b ut si entiendo lo que estás pidiendo, esto debería ser un punto de partida decente ...
([A-Za-z0-9-]+\.([A-Za-z]{3,}|[A-Za-z]{2}\.[A-Za-z]{2}|[A-za-z]{2}))\b
EDIT:
Para aclarar, que está buscando:
uno o más personajes o guiones alfanuméricos, seguido por un punto literal
y luego una de las tres cosas ...
- tres o más caracteres alfabéticos (es decir com/net/mil/coop, etc.)
- dos caracteres alfabéticos, seguidos de un punto literal, seguido de dos alfas más (es decir, co.uk)
- dos caracteres alfabéticos (es decir, us/uk/to, etc.)
y al final de eso, un límite de palabra (\ b) que significa el final de la cadena, un espacio o un carácter no verbal (en los caracteres de las palabras regulares son típicamente alfanuméricos, y subrayado)
Como digo, no hice muchas pruebas, pero me pareció un punto de partida razonable. Probablemente necesites probarlo y sintonizarlo, e incluso entonces, es poco probable que obtengas el 100% de todos los casos de prueba. Hay consideraciones como los nombres de dominio Unicode y todo tipo de cosas técnicamente válidas pero que probablemente no se encuentren en el mundo salvaje que hagan tropezar una simple expresión regular como esta, pero esto probablemente lo consiga. tienes el 90% + del camino allí.
¿Cuál será el resultado para 'sub.domain.google.co.uk'? –
Esas no son URL sino solo nombres de dominio (excepto la última que es solo una cadena que puede interpretarse como nombre de dominio más ruta de URL). – Gumbo
@pekka "google.co.uk" como lo haría apps.facebook.com return facebook.com. @gumbo Eso es correcto. Son solo ejemplos de lo que * podría * pasar. En su mayoría será una url completa (subdominio, dominio, carpetas, archivos). – jamesmhaley