我正在努力编写正则表达式来转换字符串
"fetchSomething('param1','param2','param3')"
进入正确的函数调用。我可以通过一些拆分和子串来实现它,但为了效率(以及我自己的教育),我宁愿用.match
使用捕获组来做。
但是当我使用
时'something("stuff","moreStuff","yetMoreStuff")'.match(/(?:\(|,)("?\w+"?)/g)
我得到了
["("stuff"", ","moreStuff"", ","yetMoreStuff""]
无论?:
如何,这都是相同的结果,这让我感到困惑,因为我认为?:
会导致它忽略第一个捕获组?或者我完全不想理解捕获组?
答案 0 :(得分:0)
当g
标志处于活动状态时,您将获得整个字符串。如果你只是在子匹配之后,那么你需要使用.exec
和一个循环:
var regex = /(?:\(|,)("?\w+"?)/g;
var s = 'something("stuff","moreStuff","yetMoreStuff")';
var match, matches=[];
while ( (match=regex.exec(s)) !== null ) {
matches.push(match[1]);
}
alert(matches);