2009-08-06 4 views
1

parmi une série d'URLComment supprimer tous les paramètres et le nom de domaine d'une URL à l'aide de javascript?

http://www.anydotcom.com/myfolder/some-url.html 
http://www.anydotcom.com/myfolder2/index.html# 
http://www.anydotcom.com/myfolder3/index.html?someParam=aValue 
http://www.anydotcom.com/foldername/index.html?someParam=anotherValue

Tout d'abord, comment pourrais-je enlever quoi que ce soit de la fin de l'URL afin que je me retrouve avec

http://www.anydotcom.com/myfolder/some-url.html 
http://www.anydotcom.com/myfolder2/index.html 
http://www.anydotcom.com/myfolder3/index.html 
http://www.anydotcom.com/foldername/index.html

ou, idéalement, je voudrais à revenir

/myfolder/some-url.html 
/myfolder2/index.html 
/myfolder3/index.html 
/foldername/index.html

J'ai essayé

 
    var thisUrl = "" + window.location; 
    var myRegExp = new RegExp("([^(\?#)]*)"); 
    thisUrl = myRegExp.exec(thisUrl); 

mais cela revient

 
http://www.anydotcom.com/foldername/index.html,http://www.anydotcom.com/foldername/index.html 

et je ne comprends pas bien pourquoi.

J'apprécie n'importe quelle aide ici!

Répondre

1

Si vous utilisez window.location, vous pouvez simplement accéder aux données recherchées en utilisant:

var thisUrl = window.location.pathname; 

Si vous extrayez des choses à partir de liens, l'expression régulière suivante vous obtiendrez ce que vous avez besoin:

// Supports all protocols (file, ftp, http, https, whatever) 
var pathExtract = /^[a-z]+:\/\/\/?[^\/]+(\/[^?]*)/i; 
var thisUrl = (pathExtract.exec(someUrl))[1]; 
+0

Ugh. C'est ce que je reçois pour ne pas complètement vérifier l'objet de localisation. Merci pour la réponse rapide. –

+0

Et merci à l'autre, aussi correct, réponses. –

0

Javascript location object

var loc = window.location; 
var thisUrl = loc.protocol + "//" + loc.hostname + loc.pathname; 
+0

Une autre excellente réponse. Merci! –

2

Eh bien, pour répondez directement à votre question, voici l'expression régulière pour le faire.

thisUrl = thisUrl.replace(/^https?:\/\/[^\/]|\?.*$/g, ''); 

Cependant, puisque vous mentionnez window.location dans votre code, vous pouvez réellement obtenir ces données directement à partir du location object.

thisUrl = top.location.pathname; 
+0

Merci d'avoir répondu à ma question initiale avant de me montrer l'erreur de mes habitudes! Je dois absolument commencer à rechercher les propriétés existantes d'un objet avant d'essayer de réinventer la roue. –

+0

Cette regex supprime le premier caractère. –

0

utilisant le window.location objet est simple écriture:

function getPath() { 
    return window.location.pathname; 
} 
Questions connexes