【发布时间】:2021-09-10 15:28:14
【问题描述】:
我需要用<span> 标记将特定术语包装在带有<span> 标记的文本字符串中,前提是该术语尚未包含在<span> 标签中。
例如我有一串文本:
Test string of text containing foo bar and baz.
还有一个带有键值对的对象在字符串中搜索:
toolTips = {
foo: 'tooltip for foo',
bar: 'problematic tooltip that also contains baz',
baz: 'tooltip for baz'
}
我需要遍历对象键并使用<span> 标记包装匹配项以添加工具提示文本。
所以在循环的第一次迭代之后,字符串将是:
Test string of text containing
<span class="tooltip">foo
<span class="tooltip-text">tooltip for foo</span>
</span>
bar and baz.
第二个之后是:
Test string of text containing
<span class="tooltip">foo
<span class="tooltip-text">tooltip for foo</span>
</span>
<span class="tooltip">bar
<span class="tooltip-text">problematic tooltip that also contains baz</span>
</span>
and baz.
在第三个之后它将是:
Test string of text containing
<span class="tooltip">foo
<span class="tooltip-text">tooltip for foo</span>
</span>
<span class="tooltip">bar
<span class="tooltip-text">problematic tooltip that also contains baz</span>
</span>
and
<span class="tooltip">baz
<span class="tooltip-text">tooltip for baz</span>
</span>
.
我已经尝试使用string.replace() 和各种正则表达式模式来执行此操作,但我无法让它完全发挥作用。之前添加的 <span> 中的文本被匹配和替换,或者我对正则表达式中的结束 </span 标记进行否定预测,然后任何跨度之前的文本都不会匹配。
不胜感激有关如何处理此问题的想法。
【问题讨论】:
标签: javascript html regex