如何在标签中包装不是标签的一部分的文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在标签中包装不是标签的一部分的文本?相关的知识,希望对你有一定的参考价值。

我试图突出(用<mark)另一个字符串中的搜索字符串,但它不应该是标记的一部分(即te中的<cite>不应该匹配,但te中的test应该)。我一直在使用这样的代码来替换匹配的第二个正则表达式,但只能嵌套。

someElement.innerhtml.replace(regex, function(full, before, match, after) {
  return before + '<mark>' + match + '</mark>' + after;
});

建议我试过:

  • </w*>(w*s*)*(te)(w*s*)*<([a-z]*s*w*="w*")*>(根本不匹配?)
  • (<.+?>[^<>]*?.*)(te)(.*[^<>]*?<.+?>)(仅适用于嵌套标签)
  • ((<.+?>[^<>]*?)?.*)(te)(.*([^<>]*?<.+?>)?).replace给undefined's)

例:

要换行的字符串:te

输入文本:

‘This is a test string’
<cite> — some test wrapped too</cite>

预期产量:

‘This is a <mark>te</mark>st string’
<cite> — some <mark>te</mark>st wrapped too</cite>

谢谢,我已经浏览了很多“复制品”,但找不到一个确切的复制品,但如果有人能引导我找到一个有效的例子,那也很可爱,谢谢!

现在删除的对我来说最好的答案是(te)(?![^<]*>)(由revo提供)。但是,如果下一个char是>,那么这不起作用,但我会将其视为未解决的边缘情况。

答案

正则表达式:

(te)(?!w*>)

它受益于负向前瞻,以检查它是否在开/关标签内。 (?!w*>)这将忽略任何单词字符和te(可能表示在标签名称内)的>

失败案例:

当输入字符串中可能存在类似test>(未配对)的字符串时,即使它不是标记也不匹配。

Live demo

以上是关于如何在标签中包装不是标签的一部分的文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在原型单元格中包装 UILabel

如何在文本区域标签中的特定光标位置插入选择标签下拉值作为文本片段?

从多个因素之一在 facet_grid 中包装文本

如何在 ggplot 的 geom_text_repel 或 geom_text 标签中包含斜体文本?

是否可以在 python 的 matplotlib 中包装 xticks 的文本?

如何在静态文本标签中包含特殊字符?