JavaScript、动态Regex、替换分隔符之间的所有内容(包括分隔符)

JavaScript, Dynamic Regex, Replace everything between and including delimiters

本文关键字:分隔符 包括 Regex 动态 替换 之间 JavaScript      更新时间:2023-09-26

要删除的文本:


我正试图从文件中删除一行文本。<%'/testStart'%><%'/testEnd'%>`之间的所有内容,包括分隔符。

<%'/testStart'%> Some text with other random characters in between <%'/testEnd'%>

JavaScript:


我试过这个,但没有成功。嗯,有一次我让它处理RegExp中硬编码的所有内容。但我已经尝试了很多方法,我不记得我做了什么。基本上,我认为我只是没有正确地逃避一些事情。

var p       = "/test"; //this is dynamic
var start   = "<%'" + p + "Start" + "'%>";
var end     = "<%'" + p + "End" + "'%>";
var regex   = new RegExp("''" + start + "[^:]''" + end);
var newData = data.replace(regex,"");

预期结果:


完全拆下此管路。

<%'/testStart'%> Some text with other random characters in between <%'/testEnd'%>

非常感谢您的帮助。谢谢,

用懒惰的.*?内部匹配

".*?" 替换内部"[^:]''"

var regex   = new RegExp( start + ".*?" + end );

其效果是将所有内容都匹配到结束参数。

解释

.*?中的星形量词被?设置为"惰性",因此点只匹配所需的字符数量,以允许下一个标记匹配(最短匹配(。在没有?的情况下,.*首先匹配整个字符串,然后仅根据需要回溯,以允许匹配下一个令牌(最长匹配(。