如何使用正则表达式读取括号内的所有字符串
问题描述:
我想获取括号内的所有字符串。例如,应用正则表达式后如何使用正则表达式读取括号内的所有字符串
"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
,则会产生无限循环。
另请注意,如果在引号之间存在)
,它会给出不希望的结果。
答
您可以使用此代码几乎做的工作:
"fun('xyz'); fun('abcd'); fun('abcd.ef')".match(/'.*?'/gi);
你会得到["'xyz'", "'abcd'", "'abcd.ef'"]
包含额外'
串绕。
答
找到你所需要的最简单的方法就是使用这个正则表达式:/[\w.]+(?=')/g
var string = "fun('xyz'); fun('abcd'); fun('abcd.ef')";
string.match(/[\w.]+(?=')/g); // ['xyz','abcd', 'abcd.ef']
它将与字母数字字符和点工作,你将需要改变[\w.]+
添加更多的符号。
那么,当你已经有了答案时,你为什么问这里? http://www.rubular.com/r/rWMUMS8a36 – mellamokb 2012-07-30 20:58:40