JavaScript,动态正则表达式,替换分隔符之间的所有内容

时间:2014-07-23 02:41:01

标签: javascript regex

要删除的文字:


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

<%'/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'%>

非常感谢任何帮助。谢谢,

1 个答案:

答案 0 :(得分:3)

将内部与懒惰.*?

匹配

将内部部分"[^:]\\"替换为".*?"

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

效果是将所有内容与最终参数匹配。

<强>解释

.*?中的星形量词由?变为“懒惰”,因此点只匹配所需的字符数以允许下一个标记匹配(最短匹配)。如果没有?,则.*首先匹配整个字符串,然后仅根据需要进行回溯以允许下一个标记匹配(最长匹配)。