考虑以下刺痛:
'aaa (d) ddd (xc) '
我如何使用匹配函数获得以下结果:
["d","xc"]
我试过'aaa (d) ddd (xc) '.match(/\(.*?\)/g)
但它返回:["(d)","(xc)"]
考虑以下刺痛:
'aaa (d) ddd (xc) '
我如何使用匹配函数获得以下结果:
["d","xc"]
我试过'aaa (d) ddd (xc) '.match(/\(.*?\)/g)
但它返回:["(d)","(xc)"]
稍微调整一下 Korikulum 的正则表达式......
如果没有.*
指定任何不是左括号的内容:
'aaa (d) ddd (xc) (more) text'.match(/[^\(]+(?=\))/g) // >> ["d", "xc", "more"]
由于 JavaScript 不支持向后看,你可以这样做:
var a = 'aaa (d) ddd (xc)'.match(/\(.*?(?=\))/g);
for (var i = 0; i < a.length; i++)
a[i] = a[i].slice(1);
你可以用replace
代替来做到这一点match
。我今天回答了一个类似的问题:
var str = 'aaa (d) ddd (xc)',
results = [];
str.replace(/\(([^()]+)\)/g, function(a,b) { results.push(b) });
console.log(results); //=> ['d', 'xc']