Non ho fatto molti test su questo, b ut se ho capito quello che stai chiedendo, questo dovrebbe essere un punto di partenza decente ...
([A-Za-z0-9-]+\.([A-Za-z]{3,}|[A-Za-z]{2}\.[A-Za-z]{2}|[A-za-z]{2}))\b
EDIT:
Per chiarire, che sta cercando:
uno o più caratteri alfanumerici o trattini, seguite da un punto letterale
e quindi una delle tre cose ...
- tre o più caratteri alfa (ad es. com/net/mil/coop, ecc.)
- due caratteri alfa, seguiti da un punto letterale, seguito da altri due alpha (cioè co.uk)
- due caratteri alfa (ovvero noi/uk/a, ecc.)
e alla fine di questo, un confine di parola (\ b) significa la fine della stringa, uno spazio o un carattere non-parola (in caratteri alfanumerici espressioni regolari sono tipicamente caratteri alfanumerici e di sottolineatura).
Come ho detto, non ho fatto molti test, ma sembrava un punto di partenza ragionevole. Probabilmente dovresti provarlo e modificarlo, e anche in questo caso è improbabile che otterrai il 100% per tutti i casi di test. Ci sono considerazioni come i nomi di dominio Unicode e tutti i tipi di cose valide dal punto di vista tecnico, ma-non-probabilmente-non-incontrate-nel-selvaggio che faranno saltare una semplice regex come questa, ma questo probabilmente otterrà il 90% + del modo in cui ci sono.
Quale sarà il risultato per "sub.domain.google.co.uk'? –
Questi non sono URL ma solo nomi di dominio (tranne l'ultimo che è solo una stringa che può essere interpretata come nome di dominio più un percorso URL). – Gumbo
@pekka "google.co.uk" così come apps.facebook.com restituirà facebook.com. @gumbo È corretto. Sono solo esempi di ciò che * potrebbe * essere passato. Per lo più sarà un URL completo (sottodominio, dominio, cartelle, file). – jamesmhaley