我有以下 JS -
var pattern = new RegExp("(\\b" + value + "\\b)", 'gi')
if (pattern.test(text)) {
text = text.replace(pattern, "<span class='class1'>$1</span>");
}
(e.g. value = 'text', text = 'Simple text <span class='class1'>simple text</span> text.')
使用这个 JS,我用 span 标签包装所有“文本”单词。但在这种情况下,我将使用 span 标签双重包裹第二个“文本”字。我需要替换所有等于 Value 变量的单词,但如果这个单词已经在 Class1 的范围内,我需要跳过这个单词。
示例:初始文本是:“当使用替代时,顺序很重要,因为匹配算法将首先尝试匹配最左边的替代。”。我需要包装所有“使用替代品”和“替代品”字眼。首先我们替换“使用替代品”,结果将是:
"When <span class="class1">using alternative</span>, the order is important since the matching algorithm will attempt to match the leftmost alternative first."
然后我们替换“替代”:
"When <span class="class1">using <span class="class1">alternative</span></span>, the order is important since the matching algorithm will attempt to match the leftmost <span class="class1">alternative</span> first.".
所以我首先用 2 个跨度标签包装了“替代品”。而且我不需要“替代”的第二个标签,有“使用替代”就足够了。