Javascript 我想在最内部的{}之间找到文本 研究:

Javascript 我想在最内部的{}之间找到文本 研究:,javascript,regex,Javascript,Regex,我甚至不知道如何朝这个方向走。搜索谷歌\{[^{}]*\}获得了正则表达式,但它最多只匹配两个级别 所以,我的问题是 {}的数量可能会有所不同。但是我只想要最内部的{} 我的实际测试用例: for(i=0;i<=50;i++){for(j=0;j<50;j++){$('body').append('hey I am a bug<br>');}} for(i=0;i搜索除{和}之外的所有字符怎么样? /\{([^\{\}]+)\}/ 这里有一个任务的快速解析器 var

我甚至不知道如何朝这个方向走。搜索谷歌
\{[^{}]*\}
获得了正则表达式,但它最多只匹配两个级别

所以,我的问题是
{}
的数量可能会有所不同。但是我只想要最内部的
{}

我的实际测试用例:

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

for(i=0;i搜索除
{
}
之外的所有字符怎么样?
/\{([^\{\}]+)\}/


这里有一个任务的快速解析器

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".
var text=“{{t}{{{text!}}}}”;
var最佳值=0,高度=0;
var curText='';
var winner='';
对于(变量i=0;i最佳){
winner=curText;
最佳=高度;
}
curText=“”;
高度--;
}否则{
curText+=文本[i];
}
}
//答案在变量“winner”中。

将只返回
a
for
{a}{b}
@jantimon:正确。修改程序以保留b或者同时保留a和b并不困难。
"{ {} { { text! } } }".match(/\{([^\{\}]+)\}/g)[1] // Returns text !
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".