2013-01-20 37 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

相关问题