在Javascript中使用正则expression式进行recursion匹配

示例string: $${a},{s$${d}$$}$$

我想先匹配$${d}$$并将其replace为一些文本,以使string变为$${a},{sd}$$ ,然后$${a},{sd}$$将匹配。

令人烦恼的是,Javascript不提供PCRErecursion参数(?R) ,所以处理嵌套问题并不容易。 可以这样做。

我不会复制代码,但是如果您查看Steve Levithan的博客 ,他有一些关于这个主题的好文章。 他应该这样做,他可能是JS的RegExp的主要权威。 他写了XRegExp ,它取代了大部分丢失的PCRE位,甚至还有一个Match Recursive插件!

既然你想recursion地做这个,你可能最好使用一个循环来完成多个匹配。

正则expression式本身并不适合recursion – 任何东西。

一般来说,正则expression式并不适合这类问题。 最好使用状态机。

我自己写这个:

 String.prototype.replacerec = function (pattern, what) { var newstr = this.replace(pattern, what); if (newstr == this) return newstr; return newstr.replace(pattern, what); }; 

用法:

 "My text".replacerec(/pattern/g,"what");