J'essaie de trouver une méthode relativement simple et fiable pour extraire l'URL de base d'une variable de chaîne en utilisant JavaScript (ou jQuery).
Par exemple, étant donné quelque chose comme:
http://www.sitename.com/article/2009/09/14/this-is-an-article/
J'aimerais avoir:
http://www.sitename.com/
Une expression régulière est-elle le meilleur pari? Si tel est le cas, quelle instruction puis-je utiliser pour affecter l'URL de base extraite d'une chaîne donnée à une nouvelle variable?
J'ai fait quelques recherches à ce sujet, mais tout ce que je trouve dans le monde JavaScript semble tourner autour de la collecte de ces informations à partir de l'URL réelle du document en utilisant location.host ou similaire.
javascript
regex
string
url
Bungle
la source
la source
Réponses:
Edit: Certains se plaignent que cela ne prend pas en compte le protocole. J'ai donc décidé de mettre à jour le code, car il est marqué comme réponse. Pour ceux qui aiment le code en une ligne ... eh bien, désolé, c'est pourquoi nous utilisons des minimiseurs de code, le code doit être lisible par l'homme et c'est mieux ... à mon avis.
Ou utilisez la solution de Davids par le bas.
la source
url = 'sitename.com/article/2009/09/14/this-is-an-article'; newurl = 'http://' + url.split('/')[0];
//now url === "http:://stackoverflow.com"
Commander::
Les navigateurs WebKit, Firefox à partir de la version 21 et les versions actuelles d'Internet Explorer (IE 10 et 11) sont implémentés
location.origin
.location.origin
inclut le protocole , le domaine et éventuellement le port de l'URL.Par exemple,
location.origin
de l'URLhttp://www.sitename.com/article/2009/09/14/this-is-an-article/
esthttp://www.sitename.com
.Pour cibler les navigateurs sans prise en charge,
location.origin
utilisez le polyfill concis suivant:la source
window.location.hostname
manquera le numéro de port s'il est donné, alors utilisezwindow.location.host
. Ainsi, le 'nom de base' complet, y compris la barre oblique de fin, serait:window.location.protocol+"//"+window.location.host + "/";
Pas besoin d'utiliser jQuery, utilisez simplement
la source
Il n'y a aucune raison de faire des fractionnements pour obtenir le chemin, le nom d'hôte, etc. d'une chaîne qui est un lien. Il vous suffit d'utiliser un lien
Vous pouvez facilement le faire avec jQuery en ajoutant l'élément et en lisant son attr.
la source
la source
Ensuite :
Pour votre demande, vous avez besoin de:
Révision 07-2017: Il peut également être plus élégant et a plus de fonctionnalités
ensuite
Cool!
la source
Si vous utilisez jQuery, c'est un moyen plutôt sympa de manipuler des éléments en javascript sans les ajouter au DOM:
la source
myAnchor.prop('hostname')
. Je suppose que jQuery a changé au cours des 5 dernières années ... Merci pour la réponse!Une approche légère mais complète pour obtenir des valeurs de base à partir d'une représentation sous forme de chaîne d'une URL est la règle d'expression régulière de Douglas Crockford:
Si vous êtes à la recherche d'une boîte à outils de manipulation d'URL plus puissants try URI.js Il prend en charge getter, setter, url normalisation etc tous avec une belle api chainable.
Si vous recherchez un plugin jQuery, alors jquery.url.js devrait vous aider
Une façon plus simple de le faire est d'utiliser un élément d'ancrage, comme @epascarello l'a suggéré. Cela présente l'inconvénient de devoir créer un élément DOM. Cependant, cela peut être mis en cache dans une fermeture et réutilisé pour plusieurs URL:
Utilisez-le comme ceci:
la source
Eh bien, l' objet API URL évite de diviser et de construire manuellement les URL.
la source
Si vous extrayez des informations de window.location.href (la barre d'adresse), utilisez ce code pour obtenir
http://www.sitename.com/
:Si vous avez une chaîne,,
str
c'est une URL arbitraire (et non window.location.href), utilisez des expressions régulières:Comme tout le monde dans l'Univers, je déteste lire les expressions régulières, alors je vais le décomposer en anglais:
Pas besoin de créer des éléments DOM ou de faire quelque chose de fou.
la source
J'utilise une simple regex qui extrait l'hôte de l'url:
et utilisez-le comme ça
Notez que si le
url
ne se termine pas par un,/
lehost
ne se terminera pas par un/
.Voici quelques tests:
la source
Vous pouvez utiliser les codes ci-dessous pour obtenir différents paramètres de l'URL actuelle
la source
Vous pouvez ensuite l'utiliser comme ça ...
La valeur de l'url sera ...
"Var url" contient également deux méthodes.
Dans ce cas, la valeur de paramQ sera 1.
La valeur de allParameters correspondra uniquement aux noms de paramètres.
Testé sur IE, Chrome et Firefox.
la source
Au lieu d'avoir à prendre en compte window.location.protocol et window.location.origin, et peut-être manquer un numéro de port spécifié, etc., il suffit de récupérer tout jusqu'au 3ème "/":
la source
Cela marche:
la source
location.pathname = '/'
Vous pouvez le faire en utilisant une regex:
est ce que ça va ?
la source
Pour obtenir l'origine de n'importe quelle URL, y compris les chemins dans un site Web (
/my/path
) ou schemaless (//example.com/my/path
), ou complet (http://example.com/my/path
), j'ai mis en place une fonction rapide.Dans l'extrait ci-dessous, les trois appels doivent être enregistrés
https://stacksnippets.net
.la source
Cela fonctionne pour moi:
la source
window.location.href donne l'adresse URL actuelle de la barre d'adresse du navigateur
cela peut être n'importe quoi comme https://stackoverflow.com/abc/xyz ou https://www.google.com/search?q=abc tilllastbackslashregex.exec () exécutez regex et relancez la chaîne correspondante jusqu'au dernier backslash, c'est-à-dire https : //stackoverflow.com/abc/ ou https://www.google.com/ respectivement
la source
Un bon moyen consiste à utiliser un
URL
objet API natif JavaScript . Cela fournit de nombreuses parties d'url utiles.Par exemple:
Comme vous pouvez le voir ici, vous pouvez accéder à tout ce dont vous avez besoin.
Par exemple:
console.log(urlObject.host); // "stackoverflow.com"
doc pour URL
la source