JavaScript中正则语法的嵌套替换

介绍

这篇文章主要介绍”JavaScript中正则语法的嵌套替换”,在日常操作中,相信很多人在JavaScript中正则语法的嵌套替换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“JavaScript中正则语法的嵌套替换”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

代码如下:


& lt; p>
& lt; table>& lt; p>& lt; p>& lt;/table>
& lt; table>& lt; p>& lt; p>& lt;/table>
& lt; p>


中& lt; table>……& lt;/table>之间的& lt; p>都替换为& lt; br/在吗?
思考
该问题的难点之一在于JavaScript支持的正则特性实在有限。楼主已经想到了非JavaScript的解法,如下:

代码如下:


re=/(& lt;=& lt;表。* ?)(& lt; p>) (=? ? & lt; \/table>)/胃肠道;
警报(sourcestr.replace(再保险、“& lt; br>“));


嗯,思路大致是这样。较真起来,即使JavaScript支持逆序环视,上面答案并不能够如愿运行。原因是带有量词的逆序环视(即在(& lt;=)里面使用吗?*,+,{}这样的量词)是更高级的的语法,极少有语言能够支持(特例是。净)。

但是,像楼主这样的正则问题应该是很普便的一个问题,我们经常需要循环地替换一些内容。该如何解答呢?

<强>思路一

阅读JavaScript的文档,我找到了lastIndex这样的东东。根据这个东东,我形成了这样的思路:
?先按外层循环,找到第一组较大的匹配。正则代码是& lt;表[^祝辞]*祝辞[\ s \ s] * ? & lt; \/table>
?定位到这次匹配结束的起始位置,替换掉这一段字串中所有的& lt; p>。
?循环执行。
我觉得上述思路大致清晰,但是细节太多(每次匹配涉及3个位置点,一个长度),解起来并非从容不迫,最终的代码想必也不会赏心悦目;尤为重要的是,整个思路像是原始的裂纹,而不是高手的攻击,而且思路与正则关系不大。我决定换一条路。

<强>思路二

关键是循环和嵌套。还好不是盗梦空间的深层递归。能否将匹配的内容保护起来,替换完之后再放回原位呢?

想到这里,就豁然开朗了。

思路:先找到所有的匹配内容,记路在数组内部中,

同时使用该正则,将原字串分割为另一个数组包装;

一个重要的特点是,包装一定比内多一个元素,它一一将内部项隔开,并处于最外层.wrapper和内在的关系,就像是一个手掌的5根指头与4个指缝的关系。将中间的元素取出,记下位置,等处理完之后,再将所有的元素粘合在一起。就是这样简单。代码如下(为了让问题更有普使性,我稍改了一下源字串):

代码如下:


& lt;脚本类型=拔谋?javascript"比;
var str=? lt; p>& lt; table>& lt; p>& lt; p>& lt;/table>& lt; p>& lt; table>& lt; p>& lt; p>& lt;/table>& lt; p>& lt; table>& lt; p>& lt; p>& lt;/table>“;

var patt=/& lt;表[^祝辞]*祝辞[\ s \ s] * ? & lt; \/table>/我;
var wrapper_result=str.split(型);
var inner_result=str.match (/& lt;表[^祝辞]*祝辞[\ s \ s] * ? & lt; \/table>/ig);

var len=inner_result.length;
最后var=wrapper_result [0];

(i=0;i<兰;我+ +)
{
tmp=inner_result[我].replace (/& lt; p>/gi,“& lt; br>“);
最后+=tmp + wrapper_result (i + 1);
}
警报(最终);
& lt;/script>


贴图:
 JavaScript中正则语法的嵌套替换“> <br/> <br/>更新<br/> <br/>果然是能人辈出,评论更精彩!请看评论中的这则代码:<br/> </p> <p>代码如下:</p> <p>警报(sourcestr.replace (/& lt;表。* ? \/table>/搞笑,函数($ 1){返回1.美元取代(/& lt; p>/搞笑,“& lt; br>“)})), </p> <p class=到此,关于“JavaScript中正则语法的嵌套替换”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

JavaScript中正则语法的嵌套替换