2013-06-25 20 views
2

我有一个大的字符串,我想从中提取圆括号内的所有部分。将大括号内的所有文本提取到字符串数组

说我有喜欢

一个字符串“这(一个)(一二)是(三级)”

我需要写会返回一个数组的函数

["one", "one two", "three "] 

我试图从这里找到的一些建议写一个正则表达式,并失败,因为我似乎只得到第一个元素,而不是一个正确的数组填充所有:http://jsfiddle.net/gfQzK/

var match = s.match(/\(([^)]+)\)/); 
alert(match[1]); 

有人能指出我在正确的方向?我的解决方案不必是正则表达式。

回答

3

你几乎在那里。你只需要改变一些东西。
首先,将全局属性添加到您的正则表达式。现在您正则表达式应该是这样的:

/\(([^)]+)\)/g 

然后,match.length将为您提供匹配的数量。并提取匹配,使用索引如match[1]match[2]match[3] ...

4

您需要一个全局正则表达式。看看这有助于:

​​

match不会做,因为它没有捕捉全球正则表达式组。 replace可用于循环。

1

您需要使用全局标志,如果你在那里有新的线路多,不断exec结果,直到你有数组中的所有结果:

var s='Russia ignored (demands) by the White House to intercept the N.S.A. leaker and return him to the United States, showing the two countries (still) have a (penchant) for that old rivalry from the Soviet era.'; 

var re = /\(([^)]+)\)/gm, arr = [], res = []; 
while ((arr = re.exec(s)) !== null) { 
    res.push(arr[1]);  
} 

alert(res); 

fiddle


供参考查阅mdn article on exec

相关问题