使用参数将字符串转换为函数

时间:2014-02-14 23:15:34

标签: javascript regex

我正在努力编写正则表达式来转换字符串

"fetchSomething('param1','param2','param3')" 
进入正确的函数调用。我可以通过一些拆分和子串来实现它,但为了效率(以及我自己的教育),我宁愿用.match使用捕获组来做。

但是当我使用

'something("stuff","moreStuff","yetMoreStuff")'.match(/(?:\(|,)("?\w+"?)/g) 

我得到了

["("stuff"", ","moreStuff"", ","yetMoreStuff""]

无论?:如何,这都是相同的结果,这让我感到困惑,因为我认为?:会导致它忽略第一个捕获组?或者我完全不想理解捕获组?

1 个答案:

答案 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);

jsfiddle