乐趣区

关于javascript:JS正则获取层级嵌套中的内容算法思路

JS 正则获取层级嵌套 {} 中的内容算法思路

JS 中应用一个正则表达式匹配多层嵌套有肯定局限性,咱们能够换个思路实现。
想要取得层级嵌套中的 function(){}; 能够分三步
1. 本义 2. 索引 3. 匹配

// 测试字符串
$App = {

init:function(){$acs = reg('{}');
    $acc = $acs.place(/}/, '};');
},
test:function(){$acs = Model('cast:body');
    for(){
        b={
            a:{
                x:{
                    y:{z:{}
                    }
                }
            }, 
            b:{}};
    };

}

};

function(){b={a:{x:{y:{z:{}}}}, b:{}};};

var a=99;
function(){c={a:{}, b:{}};};


// 1. 本义 字符串 或 正则中的 {}
// reg = ‘{}’ 或 place(/}/, ‘};’);

$acs = reg(‘<%’);
$acc = $acs.place(/[%>]/, ‘[%>];’);


// 2.{} 建设成对索引 作为正则匹配起止辨认符 [要害]
$App = {0%

init:function(){1%
    $acs = reg('[<%][%>]');
    $acc = $acs.place(/[%>]/, '[%>];');
%1},
test:function(){1%
    $acs = Model('cast:body');
    for(){2%
        b={3%
            a:{4%
                x:{5%
                    y:{6%
                        z:{7%%7}
                    %6}
                %5}
            %4}, 
            b:{4%%4}
        %3};
    %2};

%1}

%0};

function(){0%b={1%a:{2%x:{3%y:{4%z:{5%%5}%4}%3}%2}, b:{2%%2}%1};%0};

var a=99;
function(){0%c={1%a:{2%%2}, b:{2%%2}%1};%0};


// 3. 按起止辨认符循环匹配 function(){}
Arguments(5) [‘function(){0% …%0}’..]
Arguments(5) [‘function(){0% …%0}’..]

Arguments(5) [‘function(){1% …%1}’..]
Arguments(5) [‘function(){1% …%1}’..]


// 后果
// 胜利取得 多层嵌套 function(){中的内容}
// 解决实现 再将本义的 <% 以及带起止辨认符的 {1% …%1} 还原成 {}

退出移动版