使用javascript剥离标记并处理换行符

Tah*_*gir 5 javascript sanitization strip-tags

我想从html中删除标签,但保留它的换行符.

我想要的行为就像在浏览器中复制文本并将其粘贴到记事本中一样.

例如,转换的代码:

  • <div>x1</div><div>x2</div>x1\nx2
  • <p>x1</p><p>x2</p>x1\nx2
  • <b>x1</b><i>x2</i>x1x2
  • x1<br>x2x1\nx2

删除所有标签不起作用(/<.*?>/g).同时创建一个虚拟<div>并设置它innertHTML并读取它将textContent删除换行符.

任何帮助?

She*_*hef 2

尝试:

function strip_tags(str){
    return str
             .replace(/(<(br[^>]*)>)/ig, '\n')
             .replace(/(<([^>]+)>)/ig,'');
}

var str = '<div>x1</div><div>x2</div><br>'+'<p>x1</p><p>x2</p>'+'<b>x1</b><i>x2</i>';
Run Code Online (Sandbox Code Playgroud)

这将剥离标签并用新行替换<br />or <br>,但是为块元素添加新行需要相当长的时间才能找到解决方案。

这是一个演示