0

我想在括号对中获取所有字符串。例如,在应用正则表达式之后

"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); " 

输出应该是

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

我尝试了很多选项,但无法获得想要的结果。一种选择是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")

4

3 回答 3

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,您将有一个无限循环。

)另请注意,如果引号之间有 a,它将给出不希望的结果。

于 2012-07-30T20:59:32.330 回答
0

您可以使用此代码几乎可以完成这项工作:

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

你会得到在字符串周围["'xyz'", "'abcd'", "'abcd.ef'"]包含额外内容的内容。'

于 2012-07-30T21:09:41.087 回答
0

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

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

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

于 2012-08-01T05:34:44.247 回答