如何使用正则表达式读取括号内的所有字符串

时间:2012-07-30 20:56:28

标签: javascript regex

我想在括号内找到所有字符串。例如,在

上应用正则表达式之后
"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); " 

输出应该是

['xyz','abcd', 'abcd.ef'].

我尝试了很多选项,但未能获得理想的结果。 一个选项是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")

3 个答案:

答案 0 :(得分:1)

将正则表达式存储在变量中,并在循环中运行...

var re = /fun\((.*?)\)/gi,
    string = "fun('xyz'); fun('abcd'); fun('abcd.ef')",
    matches = [],
    match;

while(match = re.exec(string))
    matches.push(match[1]);

请注意,这仅适用于全局正则表达式。如果省略g,则会有无限循环。

另请注意,如果引号之间有),则会产生不良结果。

答案 1 :(得分:0)

你可以使用这段代码几乎完成这项工作:

"fun('xyz'); fun('abcd'); fun('abcd.ef')".match(/'.*?'/gi);

你会得到["'xyz'", "'abcd'", "'abcd.ef'"],其中包含额外的'字符串。

答案 2 :(得分:0)

找到所需内容的最简单方法是使用此RegExp:/[\w.]+(?=')/g

var string = "fun('xyz'); fun('abcd'); fun('abcd.ef')";
string.match(/[\w.]+(?=')/g); // ['xyz','abcd', 'abcd.ef']

它将使用字母数字字符和点,您需要更改[\w.]+以添加更多符号。