javascript - 如何用 HTML 标签替换包含字符串的文本?

标签 javascript html replace html-entities

我正在尝试找出如何用 HTML 标记替换页面上与特定短语匹配的任何文本实例 - 内容应保持不变。

bold("Hello")

上面的代码应该替换为:

<b>Hello</b>

这是我目前使用的代码:

node.data = node.data.replace('bold("','<b>');
node.data = node.data.replace('")','</b>');

问题是,而不是创建一个 <b>标签,它会转换 <>进入他们的 HTML 实体 - < >.

此外,替换 ") 的所有实例似乎不切实际与 </b> .

实现此目标的最佳方法是什么。

如果有任何帮助,我将不胜感激,谢谢!

最佳答案

我假设您的意思不是字面意义上的页面上的所有文本,而是给定元素内的所有文本。 DucFilans 正则表达式是正确的,我将稍微修改他的答案以提供完整的工作解决方案:

var parserRules = [
  { pattern: /bold\("(.*?)"\)/g, replacement: '<b>$1</b>' },
  { pattern: /italics\("(.*?)"\)/g, replacement: '<i>$1</i>' }
];

document.querySelectorAll('.parse').forEach(function(tag) {
  var inner = tag.innerHTML;
  parserRules.forEach(function(rule) {
    inner = inner.replace(rule.pattern, rule.replacement)
  });
  tag.innerHTML = inner;
});
<div class='parse'>
  <div>bold("Hello") world <p> Rose italics("pink") slow bold("!") </p> </div>
  <div>bold("astiago") cheeeeeeese!</div>
</div>

您可以在 parserRules 数组中定义正则表达式模式和替换规则,然后将解析任何标有“parse”类的元素。一个警告是这将替换所有子元素,因此如果您依赖附加到子元素或类似内容的监听器,您也需要注意这一点。

关于javascript - 如何用 HTML 标签替换包含字符串的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46019042/

相关文章:

javascript - 将 JSON 响应转换为 map

javascript - 为什么我的 WebSocket 会自动关闭?

javascript - 正则表达式仅搜索/替换文本,不在 HTML 属性中

javascript - Jquery spinner 旋转事件的值延迟

HTML/CSS如何使元素对一个元素透明但覆盖另一个元素

mysql替换字符串中大括号中的正则表达式

javascript - Meteor:错误:ENOTEMPTY:部署到 Modulus 时目录不为空

javascript - highchart 中的鼠标滚轮事件会降低 x 轴高度

python - 在 Python 字典中查找和替换值

mysql - 选择字符串中所有子字符串出现的位置