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('.'); })();