5

我想从 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删除换行符。

有什么帮助吗?

4

2 回答 2

3

这对你来说怎么样?这将替换所有出现的,<br></div>,然后去除剩余的标签。它的愚蠢,但它至少是一个开始。</p>\n

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

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

于 2011-07-27T16:36:49.577 回答
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>,但是为块元素添加新行需要相当长的时间才能提出解决方案。

这是一个演示

于 2011-07-27T16:51:16.917 回答