gpt4 book ai didi

javascript - 多次环顾并忽略内部标签

转载 作者:行者123 更新时间:2023-12-01 00:36:32 25 4
gpt4 key购买 nike

我想查找不属于另一个单词的文本(可以正常工作),但我也想查找位于 <a> 内的文本。标签

"Java <li>Javascript</li> <a href="">Some Java here</a> more java"

var regex2 = new RegExp(`(?<![a-z])Java(?![a-z])`, "gi");

text = text.replace(regex2, '++JavaUpdated++');

上面的方法可行,但下面的附加环视不起作用

var regex2 = new RegExp(`(?<![a-z])(?<!<a.*)Java(?!.*<\/a>)(?![a-z])`, "gi");

最佳答案

Don't parse HTML with regex ,但如果你坚持...

如果您使用的浏览器允许lookbehinds(见下文),则可以使用以下正则表达式:

(?<![^\s])Java(?![^\s])(?!(.(?!<a))*<\/a>)

Regex Demo

本质上,我们正在检查 Java 前面或后面除了空格之外没有任何内容,然后使用负向前视来检查标签中的文本。

我注意到您在原始正则表达式中使用了否定向后查找 - 这实际上不受 2018 年之前的 JavaScript 支持,因此您可能需要注意这一点。向后查找仅适用于 browsers supporting ECMA2018 standard .

如果你想解决这个问题而不需要负向回顾,你可以尝试:

(?:\s$|^)Java(?![^\s])(?!(.(?!<a))*<\/a>)

Regex Demo

本质上是说,如果前面有除空格或行首之外的任何内容(否则将成为单词的一部分),则不匹配 Java。

关于javascript - 多次环顾并忽略内部标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58087721/

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