gpt4 book ai didi

javascript - 正则表达式字边界仅用于空白

转载 作者:行者123 更新时间:2023-12-03 07:26:07 25 4
gpt4 key购买 nike

我的new RegExp("(\\b" + var + "\\b)")正则表达式遇到问题。我遇到的问题是,如果文本中有一个span元素,而我要替换span这个词,它将替换span元素。我认识到“ <”算作“单词边界”的问题,因此它找到了<**span**>,但我不希望这样。那么正则表达式中是否有仅适用于空格且行为类似于\b的单词边界?

最佳答案

唯一安全的方法是遍历文本节点并在其中替换。这是使用TreeWalker的一种解决方案:

var regexp = new RegExp("\\b" + src_text + "\\b", "g");
var walker = document.createTreeWalker(elt, NodeFilter.SHOW_TEXT);
var node = walker.nextNode();

while (node) {
let nextNode = walker.nextNode();
let newNode = document.createElement('span');
newNode.innerHTML = node.textContent.replace(regexp, "foo");
node.parentNode.replaceChild(newNode, node);
node = nextNode;
}


您可能还希望转义 src_text中具有特殊正则表达式含义的字符。通过快速搜索,您可以轻松地找到如何做到这一点。例如,请参见 this question

在您的情况下,替换的字符串包含HTML。这将需要更多的工作。我们创建一个新节点并设置其innerHTML,然后用新节点替换旧节点。

小提琴: https://jsfiddle.net/zanhaz0j/

关于javascript - 正则表达式字边界仅用于空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001242/

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