如何使用正则表达式解析变量

时间:2016-05-27 02:29:07

标签: javascript regex

假设有一个字符串“aaaa / {helloworld} / dddd / {good} / ccc”,
我想得到一个包含变量“helloworld”和“good”的数组,这些变量在括号{}中 有没有一种简单的方法可以使用正则表达式来实现它? 以下功能不起作用:

function parseVar(str) {
	var re = /\{.*\}/;	//	new RegExp('{[.*]}');//	/{.*}/;
	var m = str.match(re);
	console.log(m)
	if (m != null) {
		console.log((m));
		console.log(JSON.stringify(m));
	}
}

parseVar("aaaa/{helloworld}/dddd/{good}/ccc");

1 个答案:

答案 0 :(得分:3)

全局标志(g)允许正则表达式找到多个匹配项。 .*是贪婪的,这意味着它将占用尽可能多的字符但你不希望这样,所以你必须使用?,这会使它占用尽可能少的字符。使用regex101测试正则表达式会很有帮助。

function parseVar(str) {
  var re = /\{(.*?)\}/g;
  var results = []
  var match = re.exec(str);
  while (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
    results.push(match[1])
    match = re.exec(str);
  }
  return results
}

var r = parseVar("aaaa/{helloworld}/dddd/{good}/ccc")
document.write(JSON.stringify(r))