我正在尝试提取大括号之间的所有文本。字符串周围可以有任意多个花括号。但是,将有相等数量的大括号括住字符串的每一侧。
var string = "<div>{{foo}}} and {{{bar}}} and {{{{hahahahahahahahaha}}}}</div>"
需要返回
var array = ['foo','bar','hahahahahahahahaha']
我不能完全理解它...
编辑
一位朋友提供了一个可行的答案:
https://regex101.com/r/zI3qL1/1
/\{+(.*?)\}+/g
正如克里斯蒂安·隆多(Christian Rondeau)的评论所指出的那样,此答案将在数组中包含方括号,并且它不会验证方括号计数是否匹配。因此,如果有人对这个难题有一个有效的答案,我将其标记为已接受。张贴我自己的答案(朋友给我的答案)并声称已被接受似乎有点作弊。
这是使用的解决方案String.replace
。只有当括号的数量在两侧都匹配时,它才会匹配。
function getParams(input){
var matches = [];
input.replace(/(\{+)([^}]+)(}+)/g,function(orig,lb,txt,rb){
if (lb.length === rb.length)
matches.push(txt);
});
return matches;
}
var string = "<div>{{foo}} and {{{bar}}} and {{{{hahahahahahahahaha}}}}</div>";
document.write(getParams(string));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句