gpt4 book ai didi

javascript - 如何将不属于标签的文本包装在标签中?

转载 作者:行者123 更新时间:2023-11-29 19:10:33 26 4
gpt4 key购买 nike

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

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 给出未定义的)

例子:

要换行的字符串: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)。但是,如果下一个字符是 >,这将不起作用。 ,但我会将其视为 Unresolved 边缘案例。

最佳答案

正则表达式:

(te)(?!\w*>)

它受益于否定前瞻检查它是否在开始/结束标签内。 (?!\w*>) 这将忽略任何 te 后跟任何单词字符和 >(这可能表示在标签名称。)

失败案例:

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

Live demo

关于javascript - 如何将不属于标签的文本包装在标签中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com