假设有一个字符串“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");
答案 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))