javascript - 通过包含 HTML 的变量来检查特定单词

标签 javascript html

我正在使用 Quill Editor,它基本上是一个类似于 SO 中的框,您可以在其中输入文本并输出 HTML。 我将该 HTML 存储在一个变量中。现在我的网站有一个品牌和类别的标签(某些关键字)列表。

我想要一个功能来查看标签是否在该 HTML 中。 例如,我的作者输入 The new Nike Store is open now 我需要将 Nike 作为标签。它可以是具有特定类的跨度。

实现这一目标的最佳方法是什么?我想在发布之前进行检查,因为不需要活体检测。

我现在的解决方案:

我还没有实现它,但我想我会尝试检查标签列表中的每个单词,然后再转到下一个单词并将其包装在所需的 HTML 标签中(如果该单词是标签)。但这可能会使代码变得困惑,因为所有其他内容(例如通过编辑器生成的其他 HTML 标签)。

最佳答案

假设作者只输入纯文本,您可以使用正则表达式来搜索标签词(或短语),并将 HTML 中的短语替换为该短语,并用 span 括起来你的新类(class):

const input = 'The new Nike Store is open now';
const htmlStr = input.replace(/\bnike\b/gi, `<span class="tag">$&</span>`);
document.body.appendChild(document.createElement('div')).innerHTML = htmlStr;
.tag {
  background-color: yellow;
}

或者,对于动态标签,动态创建模式:

const input = 'The new Nike Store is open now';
const tags = ['nike', 'open'];
const pattern = new RegExp(tags.join('|'), 'gi');
const htmlStr = input.replace(pattern, `<span class="tag">$&</span>`);
document.body.appendChild(document.createElement('div')).innerHTML = htmlStr;
.tag {
  background-color: yellow;
}

(如果标签可以包含正则表达式中具有特殊含义的字符,escape 首先在传递给 new RegExp 之前使用它们)

关于javascript - 通过包含 HTML 的变量来检查特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53533111/

相关文章:

html - 当我使用最大宽度或宽度 : auto 时,横幅中的图像消失

javascript - Particles.js 不与光标交互

javascript - 克隆整个 JavaScript ScriptEngine

javascript - 如何使用 JavaScript 用文本填充屏幕?

jquery - 是否可以设置 DIV 标签,以免将下面的对象向下推?

javascript - 如何告诉浏览器重新验证缓存

javascript - Django 中的弹出窗体(Jquery)

javascript - 我希望在用户单击按钮时出现警报,但它们会提前出现

javascript - 检查网站是否符合 508 标准

html - 试图使背景色 block 到达屏幕的顶部和底部