Ich versuche, eine relativ einfache und zuverlässige Methode zu finden, um die Basis-URL mithilfe von JavaScript (oder jQuery) aus einer Zeichenfolgenvariablen zu extrahieren.
Zum Beispiel gegeben etwas wie:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
Ich würde gerne bekommen:
http://www.sitename.com/
Ist ein regulärer Ausdruck die beste Wahl? Wenn ja, mit welcher Anweisung kann ich die aus einer bestimmten Zeichenfolge extrahierte Basis-URL einer neuen Variablen zuweisen?
Ich habe einige Nachforschungen angestellt, aber alles, was ich in der JavaScript-Welt finde, scheint sich darum zu drehen, diese Informationen mithilfe von location.host oder ähnlichem aus der tatsächlichen Dokument-URL zu sammeln .
javascript
regex
string
url
Patzer
quelle
quelle
Antworten:
Bearbeiten: Einige beschweren sich, dass das Protokoll nicht berücksichtigt wird. Deshalb habe ich beschlossen, den Code zu aktualisieren, da er als Antwort markiert ist. Für diejenigen, die einzeiligen Code mögen ... tut mir leid, warum wir Code-Minimierer verwenden. Code sollte für Menschen lesbar sein und dieser Weg ist besser ... meiner Meinung nach.
Oder verwenden Sie Davids Lösung von unten.
quelle
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
Kasse::
WebKit-basierte Browser, Firefox ab Version 21 und aktuelle Versionen von Internet Explorer (IE 10 und 11) werden implementiert
location.origin
.location.origin
Enthält das Protokoll , die Domain und optional den Port der URL.Zum Beispiel
location.origin
der URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
isthttp://www.sitename.com
.Um Browser ohne Unterstützung für die
location.origin
Verwendung zu verwenden, verwenden Sie die folgende übersichtliche Polyfüllung:quelle
window.location.hostname
Wenn die angegebene Portnummer fehlt, verwenden Sie diesewindow.location.host
. Der vollständige 'Basisname' einschließlich des abschließenden Schrägstrichs wäre also:window.location.protocol+"//"+window.location.host + "/";
Sie müssen jQuery nicht verwenden, sondern nur
quelle
Es gibt keinen Grund, Teilungen vorzunehmen, um den Pfad, den Hostnamen usw. von einer Zeichenfolge abzurufen, die eine Verknüpfung darstellt. Sie müssen nur einen Link verwenden
Sie können dies einfach tun, indem jQuery das Element anfügt und dessen Attribut liest.
quelle
quelle
Dann :
Für Ihre Anfrage benötigen Sie:
Rückblick 07-2017: Es kann auch eleganter sein und hat mehr Funktionen
Dann
Cool!
quelle
Wenn Sie jQuery verwenden, ist dies eine coole Möglichkeit, Elemente in Javascript zu bearbeiten, ohne sie dem DOM hinzuzufügen:
quelle
myAnchor.prop('hostname')
. Ich vermute, dass sich jQuery in den letzten 5 Jahren geändert hat ... Danke für die Antwort!Douglas Crockfords Regexp-Regel ist ein einfacher, aber vollständiger Ansatz, um Grundwerte aus einer Zeichenfolgendarstellung einer URL zu erhalten:
Wenn Sie nach einem leistungsstärkeren Toolkit zur URL-Manipulation suchen, versuchen Sie es mit URI.js. Es unterstützt Getter, Setter, URL-Normalisierung usw. mit einer schönen verkettbaren API.
Wenn Sie nach einem jQuery-Plugin suchen, sollte Ihnen jquery.url.js helfen
Eine einfachere Möglichkeit ist die Verwendung eines Ankerelements, wie von @epascarello vorgeschlagen. Dies hat den Nachteil, dass Sie ein DOM-Element erstellen müssen. Dies kann jedoch in einem Abschluss zwischengespeichert und für mehrere URLs wiederverwendet werden:
Verwenden Sie es so:
quelle
Nun, das URL-API-Objekt vermeidet das manuelle Teilen und Erstellen der URLs.
quelle
Wenn Sie Informationen aus window.location.href (der Adressleiste) extrahieren, verwenden Sie diesen Code, um Folgendes abzurufen
http://www.sitename.com/
:Wenn Sie eine Zeichenfolge haben
str
, dh eine beliebige URL (nicht window.location.href), verwenden Sie reguläre Ausdrücke:Ich hasse es, wie jeder im Universum, reguläre Ausdrücke zu lesen, deshalb werde ich es auf Englisch aufschlüsseln:
Keine Notwendigkeit, DOM-Elemente zu erstellen oder etwas Verrücktes zu tun.
quelle
Ich verwende einen einfachen regulären Ausdruck, der den Host aus der URL extrahiert:
und benutze es so
Beachten Sie , wenn die
url
nicht mit einem Ende/
derhost
nicht in einem Ende/
.Hier sind einige Tests:
quelle
Sie können die folgenden Codes verwenden, um verschiedene Parameter der aktuellen URL abzurufen
quelle
Sie können es dann so verwenden ...
Der Wert von url wird ...
Die "var url" enthält auch zwei Methoden.
In diesem Fall ist der Wert von paramQ 1.
Der Wert von allParameters sind nur die Parameternamen.
Getestet auf IE, Chrome und Firefox.
quelle
Anstatt window.location.protocol und window.location.origin zu berücksichtigen und möglicherweise eine angegebene Portnummer usw. zu verpassen, greifen Sie einfach alles bis zum 3. "/":
quelle
Das funktioniert:
quelle
location.pathname = '/'
Sie können dies mit einem regulären Ausdruck tun:
passt es ?
quelle
Um den Ursprung einer URL zu ermitteln, einschließlich Pfaden innerhalb einer Website (
/my/path
) oder schemaless (//example.com/my/path
) oder vollständig (http://example.com/my/path
), habe ich eine Schnellfunktion zusammengestellt.Im folgenden Snippet sollten alle drei Anrufe protokolliert werden
https://stacksnippets.net
.quelle
Das funktioniert bei mir:
quelle
window.location.href gibt die aktuelle URL-Adresse in der Adressleiste des Browsers an
Es kann sich um https://stackoverflow.com/abc/xyz oder https://www.google.com/search?q=abc tilllastbackslashregex.exec () handeln. Führen Sie regex aus und führen Sie die übereinstimmende Zeichenfolge bis zum letzten Backslash erneut aus, dh https : //stackoverflow.com/abc/ oder https://www.google.com/ jeweils
quelle
Ein guter Weg ist die Verwendung eines nativen JavaScript-API-
URL
Objekts. Dies bietet viele nützliche URL-Teile.Beispielsweise:
Wie Sie hier sehen können, können Sie einfach auf alles zugreifen, was Sie benötigen.
Beispielsweise:
console.log(urlObject.host); // "stackoverflow.com"
doc für URL
quelle