2014-05-02 9 views

Odpowiedz

7

W prosty sposób, używając wyrażeń regularnych w JavaScript, ograniczasz go za pomocą znaku /. Jeśli jednak chciałbyś użyć globalnego obiektu RegExp, musisz podać ciąg znaków jako pierwszy argument konstruktora, używając normalnych reguł escape. Poniższe są równoważne.

// shorthand way. 
var re = /\w+/; 
// a way to pass a string in 
var re = new RegExp("\\w+"); 
+2

Dzięki. Wydaje mi się, że podwójne uciekanie jest DUŻĄ bolą, więc myślę, że utknąłem z użyciem pojedynczych ucieczek dla postaci "/" i używania "/" jako ogranicznika. Byłoby wspaniale, gdyby ktoś napisał bibliotekę lub specjalną funkcję, aby ułatwić tworzenie wyrażeń regularnych w javascript! – pepper

+0

Odniosłem sukces, używając [XRegExp] (http://xregexp.com/). – L0j1k

6

Czy ograniczamy się do używania "/" w javascript?

Nie bardzo .. można uniknąć stosując dowolny regex ogranicznika za pomocą new RegExp (string) constructor.

var re = new RegExp (string); 

Wystarczy pamiętać, że będzie to wymagało do podwojenia ucieczkę zamiast pojedynczego ucieczki.

+2

Dobra odpowiedź, ale nadal chciałbym wiedzieć, czy mogę użyć innej postaci z "/" w powyższej składni. Jeśli mam zadeklarować wyrażenie regularne w ten sposób, wymaga to więcej pisania. Próbuję zredukować czas potrzebny na napisanie jednolinijkowych regex. – pepper

+3

@pper nie można. Analizator składni JavaScript jest powiązany ze wszystkimi rodzajami węzłów, podobnie jak w przypadku ogranicznika '/'; pozwalanie jakiejkolwiek innej postaci byłoby poważnie problematyczne. – Pointy

+0

musisz utworzyć instancję regex z nowym RegExp (string) i uciec wszystkie znaki specjalne dwa razy w środku, zobacz rozwiązanie. – pepper

5

w JavaScript, jeśli chcesz inline regexp, jedyną opcją jest forwardslash separator: /foo/

Jak inne odpowiedzi zauważyć można również przypisać do wyrażenia regularnego do zmiennej przy użyciu new Regexp("foo").

Używanie wielu ograniczników to zdecydowanie rzecz Perla. W Perl można użyć prawie dowolnego znaku jako separatora, na przykład z ciągów:

typowa składnia użyciu apostrofów - 'dipset'

za pomocą funkcji Q - q(dipset)q!dipset!q%dipset%

Czy ta produkuje coś czytelny jest zależny od kontekstu. Miło, że Perl pozwala ci to zrobić, jeśli wynik jest czytelny. Na przykład wyrażenia regularne są wystarczająco nieczytelne, bez paczki uciekających odwrotnych ukośników wewnątrz.

Powiązane problemy