考虑下面的刺痛:
'aaa (d) ddd (xc) '
我如何使用匹配函数得到以下结果:
["d","xc"]
我尝试'aaa (d) ddd (xc) '.match(/\(.*?\)/g)
,但它返回:["(d)","(xc)"]
答案 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']