使用正则表达式 Javascript 检索文本的父节点

retrieve parentNode of text with regex Javascript

本文关键字:文本 父节点 检索 Javascript 正则表达式      更新时间:2023-09-26

我有一个正则表达式:

var re = RegExp("(?:^''W*|(" + motBefore.replace(/[.*+?^${}()|[']'']/g, "''$&") + ")''W+)" + motErreur.replace(/[.*+?^${}()|[']'']/g, "''$&") + "(?:''W+(" + motAfter.replace(/[.*+?^${}()|[']'']/g, "''$&") + ")|''W*$)", "g"); 

有了这个正则表达式,我可以在我的页面中找到某个词的位置是定位(像这样,如果它不是我想要的,我没有多次出现)。

我想用跨度来结束motErreur。事实是我不能通过简单的替换和更改内部 HTML 来做到这一点,因为它会弄乱我页面的标签。

我正在使用:

var result = document.getElementById('edth_corps');
var textRangeGlobal = document.body.createTextRange();
textRangeGlobal.moveToElementText(result);
if(textRangeGlobal.findText(motErreur)){
    var html= "<span id='"+nbId+"' class='erreurOrthographe' oncontextmenu='rightClickMustWork(event, this);return false'>" + motErreur + "</span>";
    textRangeGlobal.pasteHTML(html);
}

我希望var result不是document.getElementById('edth_corps');而是我通过正则表达式获得结果的节点。

我在IE5上,无法弄清楚如何使用正则表达式获取节点(我尝试过match但它不起作用。

有人知道如何做到这一点吗?

使用正则表达式不是解决此问题的好方法。您最好创建一个 dom 元素并使用 dom 遍历来删除不需要的元素。您可以执行类似于以下内容的代码:

var wrap = document.createElement('div');
wrap.innerHTML = "your html";

现在您可以使用 dom 选择器使用"虚拟"元素。并将节点附加到 DOM

target.appendChild(wrap.firstElementChild.cloneNode(true);