2010-09-15 2 views
7

ProblemWie man einen regulären Ausdruck mit einem Schrägstrich in Javascript beenden

Ich versuche, den Hash-Teil einer URL übereinstimmen. Der Hash wird das Format

/#\/(.*)\// 

Dies ist einfach mit „new RegExp()“ Verfahren zum Erzeugen eines JS regulären Ausdrucks zu erreichen, aber ich kann nicht herausfinden, wie es zu tun, um das Standard-Format zu verwenden, da Die beiden Schrägstriche am Ende beginnen einen Kommentar. Gibt es eine andere Möglichkeit, dies zu schreiben, die keinen Kommentar startet?

Beispiel

// works 
myRegexp = new RegExp ('#\/(.*)\/'); 

// fails 
myRegexp = /#\/(.*)\// 
+0

Wo schlägt das fehl? 're = /#\/(.*)\//;' gibt mir '/#\/(.*)\//' auf der Konsole ... – gnarf

+1

hast du das getestet, um zu zeigen, dass es fehlschlägt? was mit? das scheint für einen Parser etwas Dummes zu sein. – lincolnk

+0

Das ist seltsam. Ich kann nicht sehen, was ich in meinem Code geändert habe, aber das Kopieren dieses Codes funktioniert einwandfrei. Mein Fehler. – lonesomeday

Antwort

10

Ich versuche, den Hash-Teil einer URL mit Javascript übereinstimmen.

Ja, mach das nicht. In jedem Browser ist ein perfekter URL-Parser integriert. Stellen Sie eine href auf einem Standortobjekt (window.location oder einen Link), und Sie können Lese/Schreib-URL Teile von Eigenschaften hostname, pathname, search, hash usw.

var a= document.createElement('a'); 
a.href= 'http://www.example.com/foo#bar#bar'; 
alert(a.hash); // #bar#bar 

Wenn Sie ein Weg wie / setzen - getrennt Liste im Hash, würde ich vorschlagen, hash.split('/') zu folgen.

Wie für die Regex funktionieren beide Versionen identisch für mich. Das nachfolgende // verursacht keinen Kommentar. Wenn Sie nur einige zwielichtige Syntaxhervorhebung beschwichtigen möchten, könnten Sie möglicherweise die / zu \x2F entkommen.

+0

Oh, schön - ich werde das benutzen. Vielen Dank! – lonesomeday

Verwandte Themen