2016-01-22 27 views
5

我有一個正則表達式:檢索parentNode文本與正則表達式的Javascript

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

有了這個正則表達式,我可以在我的頁面找到有關的positionning(這樣我也沒有多occurence某個詞的地方如果它不是我想要的那個)。

我想超過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');,但在那裏我得到了與我的正則表達式的結果節點。

我在IE5和無法弄清楚如何使用正則表達式來獲取節點(我試圖與match,但沒有奏效。

任何人有一個想法如何做到這一點?

+9

你說IE5嗎?所以你使用Win95? – 2016-01-22 15:24:44

+0

@torazaburo quirck模式兼容性:( – Slayner

+0

「i」之前「e」除「c」之外 – 2016-01-22 15:52:39

回答

0

使用正則表達式是不是一個好辦法解決這個問題你會關創建DOM元素,並使用DOM遍歷刪除不需要的元素你可以更好的做到這一點的代碼相似:。

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

現在你可以使用do與「虛擬」元素一起工作m選擇器。 並將節點追加到dom

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

查詢選擇器不存在於IE5 ....這就是爲什麼我發佈了一個問題在這裏,並使用正則表達式。如果查詢選擇器在那裏,我可以已經有這個解決方案。 – Slayner

+0

)我修改錯字,更改爲「DOM選擇器」 –

+0

仍然是一個大問題,正則表達式需要使用在句子中: 「這個測試,但不測試這個」。第一個測試將在創建的SPAN中進行,但不會使用第二個測試,這是使用RegEx的地方,所以我們可以在不需要的時候重複同樣的事情。另外你的答案只是部分,所以它不能完全回答這個問題。 – Slayner