Comment obtenir un domaine de niveau supérieur (domaine de base) à partir de l'URL en javascript

Je voudrais extraire le domaine de premier niveau (domaine de base) de l'url en javascript. Par exemple, pour la liste des URL listées ci-dessous, je dois obtenir google.com (ou google.co.in , le cas échéant) comme résultat.

Www.google.com
Www.google.co.in
Www.images.google.com
Www.images.google.co.in
Google.com
Google.co.in
Images.google.com
Images.google.co.in

Quelqu'un a eu une idée de la façon de le faire. Il n'y a pas de méthode directe pour trouver l'URL de base dans javascript, je suppose.

Merci, Anish

Celui-ci ne fonctionne que si vous êtes à l'urne que vous souhaitez obtenir le TLD.

function get_top_domain(){ var i,h, weird_cookie='weird_get_top_level_domain=cookie', hostname = document.location.hostname.split('.'); for(i=hostname.length-1; i>=0; i--) { h = hostname.slice(i).join('.'); document.cookie = weird_cookie + ';domain=.' + h + ';'; if(document.cookie.indexOf(weird_cookie)>-1){ document.cookie = weird_cookie.split('=')[0] + '=;domain=.' + h + ';expires=Thu, 01 Jan 1970 00:00:01 GMT;'; return h; } } } 

Cela dépend de la rigidité dont vous devez être. La liste complète des domaines de premier niveau valides est donnée ici , mais les règles fournies ici sont probablement plus utiles.

Une regex simple, probablement incomplète:

 /[-\w]+\.(?:[-\w]+\.xn--[-\w]+|[-\w]{3,}|[-\w]+\.[-\w]{2})$/i 

L'utilisation est quelque chose comme ça (je ne suis pas génial avec Javascript regex):

 var match = HOSTDOMAIN.exec('www.google.co.in'); if (match == null) { alert('not a valid domain!'); } else { domain = match[0]; } 

J'ai dû faire face aujourd'hui et je me suis arrangé sur:

 'www.images.google.co.in'.match(/[^.\s\/]+\.([az]{3,}|[az]{2}.[az]{2})$/)[0] //=> google.co.in 

Notez que les règles ont changé depuis que beaucoup de ces réponses ont été soumises.

 (function (){ var d = document.domain.split('.'); var i = d.indexOf('google'); return d.slice(i).join('.'); })();