2011-10-11 60 views
0

我已經在計算器上發現了一個有用的帖子在這裏,我用它來hightlight特定文本在網站上:Link to Answer正則表達式通配符不應該覆蓋

我會再重新發布(修改):

function hiliter(word) { 
    var rgxp = new RegExp(word, 'g'); 
    var repl = '<span class="highlight">' + word + '</span>'; 
content.innerHTML = content.innerHTML.replace(rgxp, repl); 
} 

現在我試圖用這個找到東西<>之間

hiliter('&lt;(.*)&gt;'); 

這找到了我想要高亮的正確部分,但輸出從變化,例如, <Example><(.*)>在頁面上。

如何使用此通配符進行搜索,但在更換時保留來自通配符搜索的html?

在此先感謝!

回答

3

你可以通過一個函數來.replace[MDN]

function hiliter(word) { 
    var rgxp = new RegExp(word, 'g'); 
    content.innerHTML = content.innerHTML.replace(rgxp, function(match, word) { 
     return '<span class="highlight">' + match + '</span>'; 
    }); 
} 

word將包含第一個捕獲組,即什麼是由.*匹配的內容,match將包含整個匹配,即單詞包括&lt;&gt;

一般說明:如果您使用innerHTML,您將銷燬並創建所有HTML元素。通過JavaScript綁定的事件處理程序將被銷燬。

+0

謝謝你的快速回答! – Fabian

+0

@ridgerunner:有一個捕獲組:'<(。*)>'。我添加了「word」來提供如何訪問捕獲組內容的示例。 –

+0

@Felix Kling - 對吧。下次我需要仔細閱讀這個問題! – ridgerunner

相關問題