2012-03-20 9 views
7

Używam wyrażenia regularnego: pattern=/([a-zA-Z0-9_\.].*?)=(.*?);/g;, które ma więcej niż jedno dopasowanie w tekście, którego używam. Teraz chcę zawartość, która jest po "=". Użyłem RegExp.$2, ale daje tylko jedną wartość. Pomóż mi uzyskać wartość po "=" we wszystkich dostępnych meczach.Grupy wyrażeń regularnych dla wielu dopasowań w javascript

+0

Jak używasz wyrażenia regularnego? – gilly3

+0

pattern.exec (script_txt); – user1275375

Odpowiedz

9

Trzeba iterację meczów w pętli while:

var match = null; 
while (match = pattern.exec(script_txt)) { 
    // Do something with match[2] 
} 
+0

Działa również z RegExp. $ 2 Thankyou – user1275375

+1

Ok, to jest niesamowite. Czy mógłbyś wyjaśnić, dlaczego to działa? Widziałam tę technikę tutaj wcześniej, ale później nie mogłam jej znaleźć. Przejrzałem dokumentację i nie mogłem nic znaleźć. Dlaczego otrzymujesz różne wyniki z tego samego wywołania metody na tych samych danych? Czy działa tylko w pętli 'while'? – gilly3

+2

Z [dokumentacji exec] (http://msdn.microsoft.com/en-us/library/windows/apps/z908hy33 (v = vs.94) .aspx): Jeśli metoda 'exec' nie działa ' t znaleźć pasuje, zwraca NULL (dlatego może być umieszczony w pętli 'while'). Jeśli znajdzie dopasowanie, zwraca tablicę ... i modyfikuje globalny obiekt 'RegExp'. ** Jeśli flaga globalna jest ustawiona dla wyrażenia regularnego, 'exec' przeszukuje ciąg rozpoczynający się od pozycji wskazanej przez wartość' lastIndex' **. Jeśli globalna flaga nie jest ustawiona, 'exec' ... przeszukuje od początku łańcucha. –

Powiązane problemy