我想在括号内找到所有字符串。例如,在
上应用正则表达式之后"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); "
输出应该是
['xyz','abcd', 'abcd.ef'].
我尝试了很多选项,但未能获得理想的结果。
一个选项是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")
。
答案 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.]+
以添加更多符号。