2013-01-20 36 views
1

我有一些字符串與html標記。js正則表達式去除某些標記形式的文本字符串

var str = '<a href="www.com">text</a> 
<script> 
//some code etc 
</script> 
............... etc 
'; 

我需要刪除< SCRIPT> ... </SCRIPT>使用正則表達式與JS的替換()函數。無法想象如何去做。

我的努力:

/(<script).(</script>)/m 
/<script.*>([\s\S]*)</script>/m 
/(<script)*(</script>)/ 
/<script*</script>/ 

沒有成功=(

回答

2

嘗試...

/<script>[\s\S]*<\/script>/ 

如果這是任意的HTML,可以考慮使用DOM操作方法,而不是

var fauxDocumentFragment = document.createElement("div"); 

fauxDocumentFragment.innerHTML = str; 

var scriptElements = fauxDocumentFragment.getElementsByTagName("script"); 

while (scriptElements.length) { 
    scriptElements[0].parentNode.removeChild(scriptElements[0]); 
} 

如果你幸運地只需要支持瀏覽器,去...

var fauxDocumentFragment = document.createElement("div"); 

fauxDocumentFragment.innerHTML = str; 

[].forEach(fauxDocumentFragment.querySelectorAll("script"), function(script) 
    script.parentNode.removeChild(script); 
}); 
+0

作品= )。 Thanx –

1

你可以嘗試以下方法:尾隨「/ M」

str.replace(/<script.*?>.*?<\/script>/m, ""); 
+0

不起作用,對不起=( –

+0

@EL它應該工作正常:http://jsfiddle.net/2Yh2V/。 – VisioN

相關問題