Javascript替换标签但保留内容

标签 javascript regex tags

假设我有这样的文本:

This should also be extracted, <strong>text</strong>

我需要text仅从整个字符串,我尝试过:

r = r.replace(/<strong[\s\S]*?>[\s\S]*?<\/strong>/g, "$1");但失败了( strong 仍然存在)。有什么正确的方法可以做到这一点吗?

预期结果

This should also be extracted, text

解决方案:

为了定位特定标签,我使用了这个:

r = r.replace(/<strong\b[^>]*>([^<>]*)<\/strong>/i, "**$1**")

最佳答案

要解析 HTML,您需要一个 HTML 解析器。请参阅this answer为什么。

如果您只想删除 <strong></strong>从文本来看,你不需要解析,但是当然简单的解决方案往往会失败,这就是为什么你需要一个 HTML 解析器来解析 HTML。这是一个简单的解决方案,删除 <strong></strong> :

str = str.replace(/<\/?strong>/g, "")

var yourString = "This should also be extracted, <strong>text</strong>";
yourString = yourString.replace(/<\/?strong>/g, "")
display(yourString);

function display(msg) {
  // Show a message, making sure any HTML tags show
  // as text
  var p = document.createElement('p');
  p.innerHTML = msg.replace(/&/g, "&amp;").replace(/</g, "&lt;");
  document.body.appendChild(p);
}

返回解析:就您而言,如果您使用的是浏览器,则可以使用浏览器的解析器轻松完成此操作:

var yourString = "This should also be extracted, <strong>text</strong>";
var div = document.createElement('div');
div.innerHTML = yourString;
display(div.innerText || div.textContent);

function display(msg) {
  // Show a message, making sure any HTML tags show
  // as text
  var p = document.createElement('p');
  p.innerHTML = msg.replace(/&/g, "&amp;").replace(/</g, "&lt;");
  document.body.appendChild(p);
}

大多数浏览器提供innerText ;火狐提供textContent ,这就是为什么会有 ||那里。

在非浏览器环境中,您需要某种 DOM 库(有很多)。

关于Javascript替换标签但保留内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324709/

相关文章:

javascript - Node JS 中 python 中的 auth 等价于什么?

javascript - 为什么我在 "Uncaught SecurityError: Failed to execute ' : Tainted canvases may not be exported. 上收到错误 'HTMLCanvasElement' toDataURL'

javascript - 有没有办法修改运行倒计时?

java - 从我的 jsp 文件中删除大开关的正确方法是什么

linux - 如何用 sed 替换未知字符 <?> ?

html - 使用 Mathematica 从 html 中的特定标签中提取文本

java - 域名排序

php - 在 php 中识别时态

javascript - 自定义电子邮件正则表达式以允许插入连字符

javascript - 如何在 JavaScript 中删除特定行(包括换行符)?