2010-09-15 20 views
7

ProblemJak zakończyć wyrażenia regularnego z ukośnikiem w JavaScript

Próbuję dopasować część skrótu adresu URL przy użyciu JavaScript. Hash będzie miał format

/#\/(.*)\// 

Jest to łatwe do osiągnięcia przy użyciu „nowych RegExp()” metoda tworzenia JS wyrażenie regularne, ale nie mogę dowiedzieć się, jak to zrobić przy użyciu standardowego formatu, ponieważ dwa przednie ukośniki na końcu rozpoczynają komentarz. Czy istnieje inny sposób napisania tego, który nie spowoduje komentarza?

Przykład

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

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

Gdzie to się nie udaje? 're = /#\/(.*)\//;' daje mi '/#\/(.*)\//' na konsoli ... – gnarf

+1

czy przetestowałeś to, aby pokazać, że się nie udaje? co z? to wydaje się głupią rzeczą do zrobienia parsera. – lincolnk

+0

To jest dziwne. Nie widzę, co zmieniłem w moim kodzie, ale kopiowanie tego kodu działa dobrze. Mój błąd. – lonesomeday

Odpowiedz

10

Próbuję dopasować część skrótu adresu URL przy użyciu JavaScript.

Tak, nie rób tego. W każdej przeglądarce jest wbudowany doskonały parser URL. Ustaw href na obiekcie lokalizacji (window.location lub link) i można odczytu/zapisu części adresu URL z właściwości hostname, pathname, search, hash itd

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

Jeśli oddanie ścieżka podobny / - oddzielona lista w haszowaniu, sugerowałbym, aby następowała hash.split('/').

Jeśli chodzi o wyrażenie regularne, obie wersje działają identycznie dla mnie. Końcowy // nie powoduje komentarza. Jeśli chcesz tylko udoskonalić podświetlanie składni, możesz potencjalnie uciec przed / do \x2F.

+0

Och, miło - użyję tego. Dzięki! – lonesomeday

Powiązane problemy