Próbuję znaleźć stosunkowo prostą i niezawodną metodę wyodrębnienia podstawowego adresu URL ze zmiennej ciągu za pomocą JavaScript (lub jQuery).
Na przykład, biorąc pod uwagę coś takiego:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
Chciałbym dostać:
http://www.sitename.com/
Czy najlepszym rozwiązaniem jest wyrażenie regularne? Jeśli tak, jakiej instrukcji mogę użyć do przypisania podstawowego adresu URL wyodrębnionego z danego ciągu do nowej zmiennej?
Przeprowadziłem kilka poszukiwań, ale wszystko, co znajduję w świecie JavaScript, wydaje się kręcić wokół zbierania tych informacji z rzeczywistego adresu URL dokumentu za pomocą location.host lub podobnego.
javascript
regex
string
url
Klecić
źródło
źródło
Odpowiedzi:
Edycja: Niektórzy narzekają, że nie bierze pod uwagę protokołu. Postanowiłem więc zaktualizować kod, ponieważ jest oznaczony jako odpowiedź. Dla tych, którzy lubią kod jednowierszowy ... przepraszam, dlatego używamy minimalizatorów kodu, kod powinien być czytelny dla człowieka i tak jest lepiej ... moim zdaniem.
Lub użyj rozwiązania Davids od dołu.
źródło
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
zamówienie::
Implementują przeglądarki oparte na WebKit, Firefox od wersji 21 i aktualne wersje Internet Explorer (IE 10 i 11)
location.origin
.location.origin
zawiera protokół , domenę i opcjonalnie port adresu URL.Na przykład
location.origin
adres URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
tohttp://www.sitename.com
.Aby kierować reklamy na przeglądarki bez obsługi
location.origin
następującego zwięzłego wypełnienia:źródło
window.location.hostname
pominie numer portu, jeśli zostanie podany, więc użyjwindow.location.host
. Tak więc pełna nazwa „basename” zawierająca końcowy ukośnik wyglądałaby tak:window.location.protocol+"//"+window.location.host + "/";
Nie musisz używać jQuery, po prostu użyj
źródło
Nie ma powodu, aby robić podziały, aby uzyskać ścieżkę, nazwę hosta itp. Z łańcucha, który jest łączem. Wystarczy użyć linku
Możesz to łatwo zrobić za pomocą jQuery dołączając element i czytając jego atr.
źródło
źródło
Następnie :
Do swojej prośby potrzebujesz:
Recenzja 07-2017: Może być również bardziej elegancki i ma więcej funkcji
Następnie
Chłodny!
źródło
Jeśli używasz jQuery, jest to fajny sposób na manipulowanie elementami w javascript bez dodawania ich do DOM:
źródło
myAnchor.prop('hostname')
. Domyślam się, że jQuery zmieniło się w ciągu ostatnich 5 lat ... Dzięki za odpowiedź!Lekkim, ale kompletnym podejściem do uzyskiwania podstawowych wartości z ciągu reprezentującego adres URL jest reguła wyrażenia regularnego Douglasa Crockforda:
Jeśli szukasz potężniejszego zestawu narzędzi do manipulacji adresami URL, wypróbuj URI.js Obsługuje , ustawiające, normalizację URL itp., A wszystko to z ładnym interfejsem API umożliwiającym łańcuch.
Jeśli szukasz wtyczki jQuery, to jquery.url.js powinien ci pomóc
Prostszym sposobem na to jest użycie elementu kotwicy, zgodnie z sugestią @epascarello. Ma to tę wadę, że musisz utworzyć element DOM. Można to jednak zapisać w pamięci podręcznej w zamknięciu i ponownie wykorzystać dla wielu adresów URL:
Użyj go w ten sposób:
źródło
Cóż, obiekt URL API pozwala uniknąć ręcznego dzielenia i tworzenia adresu URL .
źródło
Jeśli wyodrębniasz informacje z window.location.href (pasek adresu), użyj tego kodu, aby uzyskać
http://www.sitename.com/
:Jeśli masz ciąg znaków,
str
czyli dowolny adres URL (nie window.location.href), użyj wyrażeń regularnych:Podobnie jak wszyscy we Wszechświecie nienawidzę czytać wyrażeń regularnych, więc podzielę to na angielski:
Nie musisz tworzyć elementów DOM ani robić niczego szalonego.
źródło
Używam prostego wyrażenia regularnego, które wyodrębnia hosta z adresu URL:
i używaj go w ten sposób
Uwaga, jeśli
url
nie kończy się/
na,host
to nie kończy się na/
.Oto kilka testów:
źródło
Możesz użyć poniższych kodów, aby uzyskać różne parametry bieżącego adresu URL
źródło
Następnie możesz go używać w ten sposób ...
Wartość adresu URL będzie wynosić ...
„Zmienny adres URL” zawiera również dwie metody.
W tym przypadku wartość paramQ będzie wynosić 1.
Wartością allParameters będą tylko nazwy parametrów.
Przetestowano na IE, Chrome i Firefox.
źródło
Zamiast brać pod uwagę atrybuty window.location.protocol i window.location.origin i prawdopodobnie brakować określonego numeru portu itp., Po prostu pobierz wszystko do trzeciego „/”:
źródło
To działa:
źródło
location.pathname = '/'
Możesz to zrobić za pomocą wyrażenia regularnego:
czy to pasuje ?
źródło
Aby uzyskać pochodzenie dowolnego
/my/path
adresu URL, w tym ścieżek w witrynie ( ) lub schemaless (//example.com/my/path
) lub full (http://example.com/my/path
), utworzyłem szybką funkcję.W poniższym fragmencie wszystkie trzy połączenia powinny zostać zarejestrowane
https://stacksnippets.net
.źródło
To działa dla mnie:
źródło
window.location.href podaje aktualny adres url z paska adresu przeglądarki
może to być coś takiego jak https://stackoverflow.com/abc/xyz lub https://www.google.com/search?q=abc tilllastbackslashregex.exec () uruchomić wyrażenie regularne i ponownie dostroić dopasowany ciąg do ostatniego ukośnika odwrotnego, tj. https : //stackoverflow.com/abc/ lub https://www.google.com/ odpowiednio
źródło
Dobrym sposobem jest użycie natywnego
URL
obiektu API JavaScript . Zapewnia to wiele przydatnych części adresu URL.Na przykład:
Jak widać tutaj, możesz uzyskać dostęp do wszystkiego, czego potrzebujesz.
Na przykład:
console.log(urlObject.host); // "stackoverflow.com"
doc dla adresu URL
źródło