Ниже приведено решение для извлечения доменного имени без каких-либо поддоменов. Это решение не делает никаких предположений о формате URL, поэтому оно должно работать для любого URL. Так как некоторые доменные имена имеют один суффикс (.com
), а некоторые имеют два или более (.co.uk
), чтобы получить точный результат во всех случаях, нам нужно проанализировать имя хоста, используя Public Suffix List , который содержит список всех суффиксов имен публичного домена.
Решение
Сначала включите открытый список суффиксов js api в тег сценария в своем HTML, а затем в JavaScript, чтобы получить имя хоста, который вы можете вызвать:
var parsed = psl.parse('one.two.roothost.co.uk');
console.log(parsed.domain);
... который вернет "roothost.co.uk". Чтобы получить имя с текущей страницы, вы можете использовать location.hostname
вместо статической строки:
var parsed = psl.parse(location.hostname);
console.log(parsed.domain);
Наконец, если вам нужно разобрать доменное имя непосредственно из полной строки URL, вы можете использовать следующее:
var url = "http://one.two.roothost.co.uk/page.html";
url = url.split("/")[2]; // Get the hostname
var parsed = psl.parse(url); // Parse the domain
document.getElementById("output").textContent = parsed.domain;
Пример JSFiddle (включает всю минимизированную библиотеку в jsFiddle, поэтому прокрутите вниз!): https://jsfiddle.net/6aqdbL71/2/