正则表达式删除换行符

时间:2010-09-10 19:46:17

标签: javascript regex

我希望有人可以帮助我。我不确定如何使用以下正则表达式。我使用经典ASP与Javascript

completehtml = completehtml.replace(/\<\!-- start-code-remove --\>.*?\<\!-- start-code-end --\>/ig, '');

我有这段代码来删除

之间的所有内容
  

<\!-- start-code-remove --\><\!-- start-code-end --\>

line breaksstart代码之间的值中有end的情况下,它完美无缺...

即使有start

,如何编写正则表达式以删除endline breaks之间的所有内容

感谢百万人回复...

Shoud我使用的\n\s字符不是100%确定..

(/\<\!-- start-code-remove --\>\s\n.*?\s\n\<\!-- start-code-end --\>/ig, '');

同样代码不应该在<\!-- start-code-remove --\> <\!-- start-code-end --\>/之间贪婪并捕获组中的值......

可能有3个或更多这些集......

4 个答案:

答案 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)

Source

  

确实没有/ 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;
}