W moim projekcie mam wiele strun zawierających nazwiska domen i nazwę subdomena w różnych formatach.

Potrzebuję funkcji JavaScript, która powraca do mnie tylko nazwę domeny pierwszej poziomu w ciągu, na przykład:

string: https://www.example.com/test/intro.php
return: www.example.com

string: http://www.test.fr/
return: www.test.fr

string: http://mysite.eu/portal/
return: mysite.eu

[...]

Czy istnieje funkcję, która osiąga ten cel w każdym przypadku?

1
AleMal 2 grudzień 2013, 16:38

3 odpowiedzi

Najlepsza odpowiedź

Utwórz element kotwiący i spraw, aby href sznurek.

var a  = document.createElement('a');
a.href = data;

Zdobądź nazwę hosta z tego.

a.hostname

Podobnie możesz pobrać protokół i inne właściwości.

a.protocol; // => "http:"
a.host;     // => "example.com:5000"
a.hostname; // => "example.com"
a.port;     // => "5000"
a.pathname; // => "/pathname/"
a.hash;     // => "#value"
a.search;   // => "?q=test"

Oto funkcja, aby odpowiedzieć na twoje pytanie

function getDomainFromURL(data) {
     var a = document.createElement('a');
     a.href = data;
     return a.hostname;
}
3
Sorter 2 grudzień 2013, 12:53

Nie ma wbudowanej funkcji, ale możesz samodzielnie zrobić.

Ten regexp pasuje do wszystkich opublikowanych przypadków:

/:\/\/(.*?)\//

http://regex101.com/r/ds8uk8.

Stosowanie:

var str = 'http://mysite.eu/portal/';
var domain = str.match(/:\/\/(.*?)\//)[1];
console.log(domain); //"mysite.eu"
0
Tibos 2 grudzień 2013, 12:42

Jeśli nie lubisz regexp (jak ja :)) Możesz spróbować tego:

function getDomain (inputString) {
  var res = inputString.split("/");
  return res[2];
}
0
Andrew Surzhynskyi 2 grudzień 2013, 12:42