I want to parse a string which contains shortcodes and push each extracted node into an array. However the recursive function I have written for this never terminates. What am I doing wrong here?
var i = 0;
var nodes = [];
var pattern = /(\[sc_(\w+)[\s\w="_-]*\])(.*)(\[\/sc_\2\])/gi;
var extractNodes = function(str, parent) {
var m;
if (str.indexOf('[sc_') === -1) return;
while ((m = pattern.exec(str)) !== null) {
nodes.push({
id: i,
tag: m[2],
children: m[3],
parentId: parent
});
extractNodes(m[3], i++);
}
}
extractNodes("[sc_div][sc_span][sc_strong]Foo[/sc_strong][/sc_span][/sc_div]", -1);
returnin the recursive function.return extractNodes(m[3], i++);strparameter for every iteration: jsfiddle.net/igor_9000/9yaz6cdubreak