繁体   English   中英

正则表达式删除换行符

[英]Regex remove line breaks

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

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

我有这个代码删除之间的所有内容

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

它完美无缺,直到startend代码之间的值有line breaks ......

即使有line breaks我如何编写正则表达式以删除startend之间的所有内容

万分感谢...

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

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

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

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

点与Javascript中的新行不匹配,也没有修改器可以使它(与大多数现代正则表达式引擎不同)。 常见的解决方法是使用此字符类代替点: [\\s\\S] 所以你的正则表达式成为:

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

试试(.|\\n|\\r)*

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

资源

确实没有/ s修饰符使点匹配所有字符,包括换行符。 要绝对匹配任何字符,您可以使用包含速记类及其否定版本的字符类,例如[\\ s \\ S]。

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM