2012-03-20 32 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