2012-03-20 59 views
7

我正在使用一個正則表達式:pattern=/([a-zA-Z0-9_\.].*?)=(.*?);/g;它在我使用的文本中有多個匹配項。現在我想要「=」後的內容。我使用RegExp.$2,但它只給出一個值。請幫助我在所有可用比賽中獲得「=」後的值。在javascript中的多個匹配的正則表達式組

+0

你如何使用正則表達式? – gilly3 2012-03-20 04:40:40

+0

pattern.exec(script_txt); – user1275375 2012-03-20 04:42:16

回答

9

你必須通過一個while循環比賽迭代:

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

它也適用於RegExp。$ 2 Thankyou – user1275375 2012-03-20 04:53:27

+1

好的,這太棒了。你能解釋一下爲什麼它有效嗎?我之前看過這種技術,但後來再也找不到。我查看了一些文檔,找不到任何東西。爲什麼從同樣的方法調用相同的數據獲得不同的結果?它只能在while循環中工作嗎? – gilly3 2012-03-20 05:15:06

+2

從['exec'文檔](http://msdn.microsoft.com/en-us/library/windows/apps/z908hy33(v = vs.94).aspx):如果'exec'方法不' t找到一個匹配,它返回NULL(這就是爲什麼它可以放入'while循環)。如果它找到匹配,它將返回一個數組...並修改全局的「RegExp」對象。 **如果全局標誌被設置爲一個正則表達式,'exec'搜索字符串從'lastIndex' **的值所指示的位置開始。如果沒有設置全局標誌,'exec'從字符串的開頭搜索。 – 2012-03-20 05:26:41