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

时间:2011-07-27 16:02:32

标签: 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)。 还要创建一个虚拟&lt; div&gt;并设置为innertHTML并读取textContent将删除换行符。

任何帮助?

2 个答案:

答案 0 :(得分:3)

这对你有用吗?这将用<br>替换</div></p>\n的每一次出现,然后删除剩余的标记。它的傻瓜,但它至少是一个开始。

fixed = text_to_fix.replace(/<(?:br|\/div|\/p)>/g, "\n")
           .replace(/<.*?>/g, "");

然而,这不适用于所有HTML。只是你提到的标签。

答案 1 :(得分: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>';

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

Here is a demo