使用RegEx获取包装的字符串

时间:2012-11-06 05:15:51

标签: javascript regex

考虑下面的刺痛:

'aaa (d) ddd (xc) '

我如何使用匹配函数得到以下结果:

["d","xc"]

我尝试'aaa (d) ddd (xc) '.match(/\(.*?\)/g),但它返回:["(d)","(xc)"]

3 个答案:

答案 0 :(得分:1)

稍微调整一下Korikulum的正则表达式......

如果没有任何.*指定任何未打开括号的内容:

'aaa (d) ddd (xc) (more) text'.match(/[^\(]+(?=\))/g) // >> ["d", "xc", "more"]

答案 1 :(得分:0)

由于JavaScript不支持后面的内容,你可以这样做:

var a = 'aaa (d) ddd (xc)'.match(/\(.*?(?=\))/g);

for (var i = 0; i < a.length; i++)
  a[i] = a[i].slice(1);

答案 2 :(得分:0)

您可以使用replace而不是match来执行此操作。我今天回答了similar question

var str = 'aaa (d) ddd (xc)', 
    results = [];
str.replace(/\(([^()]+)\)/g, function(a,b) { results.push(b) });

console.log(results); //=> ['d', 'xc']