2013-12-18 27 views
0

基本上我有這種標籤(只是舉例)的如何在標籤中搜索特定的屬性和使用JavaScript的正則表達式

<div type="text" onclick="event();" onblur="event();">this div has onclick and onblur functions</div> 

刪除它,我想用一個參考變量刪除一些屬性,該屬性標籤。

var refAttribs = ['onclick', 'onblur']; 

所以它應該從refAttribs去除所有屬性。 是小心不去掉div的內容。因爲它還包含一個來自refAttribs變量的字符串。

如何使用正則表達式去掉它們? 在此先感謝

+2

你有什麼試過的?它以什麼方式不起作用?爲什麼你需要一個正則表達式?你被允許使用其他技術,還是這是一個家庭作業問題? –

+0

在這種情況下,我看不到*如何使用正則表達式,因爲您不會將整個代碼作爲文本處理,而是作爲dom樹處理。 – DontVoteMeDown

+0

我編輯我的問題。標籤是一個字符串。所以我想用正則表達式去掉參考變量的屬性。我對正則表達式並不擅長,所以我嘗試在這裏提出一個問題。當然,任何技術都是允許的。謝謝 –

回答

1

好了,試試這個:

要刪除的onclick,正則表達式爲:

(<[^>]+)\s+onclick\s*=[\'"].*?[\'"] 

Regular expression visualization

Debuggex Demo

的removeAttr功能:

function removeAttr(html, attr) { 

    return html.replace(new RegExp('(<[^>]+)\\s+' + attr + '\\s*=[\'"].*?[\'"]', 'gi'), '$1'); 
} 

http://jsfiddle.net/rooseve/pC4aH/1/

+0

哇謝謝,這就是我要找的。只有在< >和環球看起來,謝謝你 –

2

正如你所說的標籤是一個字符串,那麼你可以用下面的JavaScript來打動它。

var refAttribs = ['onclick', 'onblur']; 
function remove(tagToClean) 
{ 
    var result = tagToClean; 

    for(var i=0; i<refAttribs.length; i++) 
    { 
     regex = new RegExp(refAttribs[i] + "=\"[a-zA-Z\(\);]*?\"", "g"); 
     result = result.replace(regex, ""); 
    } 

    return result; 
} 

您可以通過傳入字符串來調用該方法。

remove('<div type="text" onclick="event();" onblur="event();">this div has onclick and onblur functions</div>'); 

我不是100%確定你要在這裏做什麼。你想修改DOM嗎?如果是這樣,您將需要修改該方法以接受DOM節點的句柄。多一點信息會有所幫助。

相關問題