我希望有人可以帮助我。我不确定如何使用以下正则表达式。我使用经典ASP与Javascript
completehtml = completehtml.replace(/\<\!-- start-code-remove --\>.*?\<\!-- start-code-end --\>/ig, '');
我有这段代码来删除
之间的所有内容
<\!-- start-code-remove --\>
和<\!-- start-code-end --\>
在line breaks
和start
代码之间的值中有end
的情况下,它完美无缺...
即使有start
end
和line breaks
之间的所有内容
感谢百万人回复...
Shoud我使用的\n
和\s
字符不是100%确定..
(/\<\!-- start-code-remove --\>\s\n.*?\s\n\<\!-- start-code-end --\>/ig, '');
同样代码不应该在<\!-- start-code-remove --\> <\!-- start-code-end --\>/
之间贪婪并捕获组中的值......
可能有3个或更多这些集......
答案 0 :(得分:6)
点与Javascript中的新行不匹配,也没有修改器可以使它(与大多数现代正则表达式引擎不同)。常见的解决方法是使用此字符类代替点:[\s\S]
。所以你的正则表达式变成了:
completehtml = completehtml.replace(
/\<\!-- start-code-remove --\>[\s\S]*?\<\!-- start-code-end --\>/ig, '');
答案 1 :(得分:3)
尝试(.|\n|\r)*
。
completehtml = completehtml.replace(/\<\!-- start-code-remove --\>(.|\n|\r)*?\<\!-- start-code-end --\>/ig, '');
答案 2 :(得分:2)
确实没有/ s修饰符可以使点匹配所有字符,包括换行符。要绝对匹配任何字符,您可以使用包含速记类及其否定版本的字符类,例如[\ s \ S]。
答案 3 :(得分:0)
javascript中的正则表达式支持不是很可靠。
function remove_tag_from_text(text, begin_tag, end_tag) {
var tmp = text.split(begin_tag);
while(tmp.length > 1) {
var before = tmp.shift();
var after = tmp.join(begin_tag).split(end_tag);
after.shift();
text = before + after.join(end_tag);
tmp = text.split(begin_tag);
}
return text;
}