我有一个RegEX:
var re = RegExp("(?:^\\W*|(" + motBefore.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")\\W+)" + motErreur.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "(?:\\W+(" + motAfter.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + ")|\\W*$)", "g");
通过这个RegEX,我可以在我的页面中找到关于定位的某个词的位置(就像这个我没有多次出现,如果它不是我想要的那个)。
我想用跨度来调整motErreur。事实是我不能通过简单的替换和改变innerHTML来做到这一点,因为它弄乱了我的页面的标签。
我正在使用:
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');
,而是我用RegEX获得结果的节点。
我在IE5上并且无法弄清楚如何使用RegEx获取节点(我尝试使用match
,但它无效。
有人有想法怎么做?
答案 0 :(得分:0)
使用正则表达式不是解决此问题的好方法。你最好创建一个dom元素并使用dom遍历来删除不需要的元素。您可以使用类似于:
的代码var wrap = document.createElement('div');
wrap.innerHTML = "your html";
现在,您可以使用dom选择器处理“virtual”元素。 并将节点附加到dom
target.appendChild(wrap.firstElementChild.cloneNode(true);