JS Regex to match everything inside braces (including nested braces): “{ I want this {and this} and this in one string }”

后端 未结 3 1634
一向
一向 2020-12-10 19:25

Meaning that I simply want to strip the enclosing braces. I can match \"{ this kind of stuff }\" with:

\"{stuff}\".match(/{([^}]*)}/)[1]

Am

3条回答
  •  醉话见心
    2020-12-10 20:06

    I agree with Lucero that Regexes are not made for that, but to answer your question:

    The problem is that you match everything except }. But since the inside data you want to match contains itself a }, the content of the outer braces is not matched.

    {
        var foo = {
            bar: 1
    ==> };
    
        var foo2 = {
            bar: 2    
    ==> };
    }
    

    You can use this regex:

    {([\S\s]*)}
    

    To explain:

    {                   match opening {
        (               group
            [\S\s]      match everything, workaround for the missing s option in JS
                  *     greedy, makes it match as much as possible
        )               end group
    }                   match closing }
    

提交回复
热议问题