我想在大多数内部{}之间找到文字

时间:2014-03-15 06:38:48

标签: javascript regex

研究:

我不知道如何朝着这个方向前进。搜索谷歌。 \{[^{}]*\}得到了正则表达式,但这只匹配了2个级别。

所以,我的问题是

{
  {
    {
     I need regex/javascript to match this text.
    }
  }
}

{}的数量可能会有所不同。但我只想要最内在{}

之间的文本

我的实际测试用例。:

for(i=0;i<=50;i++){for(j=0;j<50;j++){$('body').append('hey I am a bug<br>');}}

我需要匹配$('body').append('hey I am a bug<br>');。但正如我所说,可以有任意数量的嵌套循环。我要求这个帮助其他用户SO

谢谢!

2 个答案:

答案 0 :(得分:2)

如何搜索除{}以外的所有字符?  /\{([^\{\}]+)\}/

Regexp

"{ {} { { text! } } }".match(/\{([^\{\}]+)\}/g)[1] // Returns text !

答案 1 :(得分:2)

这是该任务的快速解析器。

var text = "{ {t} { { text! } } }";
var best = 0, height = 0;
var curText = '';
var winner = '';
for (var i = 0; i < text.length; i++) {
    if (text[i] == '{') {
        height++;
        curText = '';
    } else if (text[i] == '}') {
        if (height > best) {
            winner = curText;
            best = height;
        }
        curText = '';
        height--;
    } else {
        curText += text[i];
    }
}
// Answer is in the variable "winner".