Recursive matching with regular expressions in Javascript
Solution 1:
Annoyingly, Javascript does not provide the PCRE recursive parameter (?R)
, so it is far from easy to deal with the nested issue. It can be done however.
I won't reproduce code, but if you check out Steve Levithan's blog, he has some good articles on the subject. He should do, he is probably the leading authority on RegExp in JS. He wrote XRegExp, which replaces most of the PCRE bits that are missing, there is even a Match Recursive plugin!
Solution 2:
I wrote this myself:
String.prototype.replacerec = function (pattern, what) {
var newstr = this.replace(pattern, what);
if (newstr == this)
return newstr;
return newstr.replace(pattern, what);
};
Usage:
"My text".replacerec(/pattern/g,"what");
P.S: As suggested by @lededje, when using this function in production it's good to have a limiting counter to avoid stack overflow.