我想在括号对中获取所有字符串。例如,在应用正则表达式之后
"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); "
输出应该是
['xyz','abcd', 'abcd.ef'].
我尝试了很多选项,但无法获得想要的结果。一种选择是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")
。
我想在括号对中获取所有字符串。例如,在应用正则表达式之后
"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); "
输出应该是
['xyz','abcd', 'abcd.ef'].
我尝试了很多选项,但无法获得想要的结果。一种选择是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")
。
将正则表达式存储在一个变量中,并在循环中运行它......
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,它将给出不希望的结果。
您可以使用此代码几乎可以完成这项工作:
"fun('xyz'); fun('abcd'); fun('abcd.ef')".match(/'.*?'/gi);
你会得到在字符串周围["'xyz'", "'abcd'", "'abcd.ef'"]
包含额外内容的内容。'
找到所需内容的最简单方法是使用此 RegExp:/[\w.]+(?=')/g
var string = "fun('xyz'); fun('abcd'); fun('abcd.ef')";
string.match(/[\w.]+(?=')/g); // ['xyz','abcd', 'abcd.ef']
它适用于字母数字字符和点,您需要更改[\w.]+
以添加更多符号。