0

考虑以下刺痛:

'aaa (d) ddd (xc) '

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

["d","xc"]

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

4

3 回答 3

1

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

如果没有.*指定任何不是左括号的内容:

'aaa (d) ddd (xc) (more) text'.match(/[^\(]+(?=\))/g) // >> ["d", "xc", "more"]
于 2012-11-06T06:34:40.657 回答
0

由于 JavaScript 不支持向后看,你可以这样做:

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

for (var i = 0; i < a.length; i++)
  a[i] = a[i].slice(1);
于 2012-11-06T05:53:06.540 回答
0

你可以用replace代替来做到这一点match。我今天回答了一个类似的问题

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

console.log(results); //=> ['d', 'xc']
于 2012-11-06T06:20:20.413 回答