2012-03-20 34 views
7

Düzenli bir ifade kullanıyorum: kullanıyorum metinde birden fazla eşleşme olan pattern=/([a-zA-Z0-9_\.].*?)=(.*?);/g;. Şimdi "=" sonra olan içeriği istiyorum. RegExp.$2 kullandım, ancak sadece bir değer veriyor. Mevcut tüm eşleşmelerde "=" öğesinden sonra değeri almak için lütfen bana yardımcı olun.Birden çok eşleşme için düzenli ifade grupları javascript'te

+0

Eğer normal ifadeyi kullanırken nasıl? – gilly3

+0

pattern.exec (script_txt); – user1275375

cevap

9

Bir süre döngüsünde maç üzerinden yinelemek zorunda:

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

Aynı zamanda RegExp ile çalışıyor. $ 2 Thankyou – user1275375

+1

Tamam, bu harika. Neden çalıştığını açıklar mısın? Daha önce burada kullanılan bu tekniği görmüştüm ama sonra tekrar bulamadım. Belgelere baktım ve hiçbir şey bulamadım. Aynı verilere karşı aynı verilerden neden farklı sonuçlar alıyorsunuz? Sadece 'while' döngüsünde çalışır mı? – gilly3

+2

['exec' belgelerinden] (http://msdn.microsoft.com/en-us/library/windows/apps/z908hy33 (v = vs.94) .aspx): 'exec' yöntemi çalışmıyorsa' Bir eşleşme bulamazsa, NULL değerini döndürür (bu yüzden bir 'while' döngüsüne yerleştirilebilir). Bir eşleşme bulursa, bir dizi döndürür ... ve global 'RegExp' nesnesini değiştirir. ** Eğer global bayrak normal bir ifade için ayarlanmışsa, 'exec',' lastIndex' ** değeri ile gösterilen pozisyondan başlayan dizgeyi arar. Eğer global bayrak ayarlanmamışsa, 'exec' ... dizgenin başlangıcından itibaren arar. –