javascript - 从 html 正文中删除除 <a>、<br>、<b> 和 <img> 之外的所有 HTML 标记

标签 javascript html regex ecmascript-5

在阅读一些电子邮件 HTML 正文时,我经常有很多我不再需要的 HTML 标签。

如何在 Javascript 中从字符串中删除所有 HTML 标签,例如:

<anything ...>

</anything>

除了这少数情况<x ...> , </x> , <x ... />对于 x是:

  • a
  • br
  • b
  • img

我想到了类似的事情:

s.replace(/<[^a].*>/g, '');

但我不知道该怎么做。

示例:

<div id="hello">Hello</div><a href="test">Youhou</a>` 

应该变成

Hello<a href="test">Youhou</a>

注意:我正在寻找几行代码解决方案,可以在 90% 的情况下工作(电子邮件正文来 self 自己的电子邮件,因此我没有包含任何恶意的内容),而不是需要第三方工具/库的完整解决方案。

最佳答案

尝试更换

<\/?(?!(a|br|b|img)\b)\w+[^>]*>

什么都没有

<\/?匹配开始< ,可选地后跟 /

(?!(a|br|b|img)\b)负向预测确保我们不匹配 a , br , bimg标签。

\w+[^>]*>匹配标签的其余部分。

Here at regex101 .

关于javascript - 从 html 正文中删除除 <a>、<br>、<b> 和 <img> 之外的所有 HTML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466814/

相关文章:

javascript - browserify 模块中的“this”上下文

javascript - Alfresco - 从服务器端 JavaScript 获取 URL

javascript - React Router v4 嵌套路由改变整个内容

html - 如何将 div 内容放入移动 View 的下拉列表中

html - Overflow-x hidden 在带有 iFrame 的 Google Chrome 中不起作用

regex - Jenkins 的 ClearCase 插件 - 带有正则表达式的分支

python - 为什么 re.search(r'(ab* )',' aaAaABBbbb',re.I) 在 python 中给出结果 'a' 而不是 'ABBbbb' 尽管使用了 're.I'?

javascript - 如何在jexcel中动态创建空行

html - CSS 中的对齐不适用于另一个 HTML 页面的按钮

regex - 这可以用正则表达式吗?