我正在尝试删除以下脚本中的CDATA包装器(内容必须由CDATA包装以传递XHTML验证):
<script id="tplTest" type="text/html">
//<![CDATA[
<p id="msg">Hello</p>
<p>Another test: <#= ddd.ArtID #></p>
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var strTmp = document.getElementById("tplTest").innerHTML;
var strNew = strTmp.replace(/[\/(\/!\[)\]CDATA]/g, "").replace(/[(\/\/\]\])]/g, "");
Run Code Online (Sandbox Code Playgroud)
除了开始/结束(<,>)标记之外,它最多删除CDATA标记:
<
<p id="msg">Hello<p>
<p>nother test: <#= ddd.rtI #><p>
>
Run Code Online (Sandbox Code Playgroud)
问:我应该如何修改正则表达式来进一步除去这些开头和结尾<,>标签?
您可以只替换原始字符串并跳过使用正则表达式:
"FOO BAR".replace("FOO", ""); // replace "FOO" with "" (nothing)
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
var stringToSanitize = "//<![CDATA[ xxx //]]>";
var sanitizedString = stringToSanitize
.replace("//<![CDATA[", "")
.replace("//]]>", "");
Run Code Online (Sandbox Code Playgroud)
JavaScript中的正则表达式很慢.因此,除了解决问题之外,您可能会看到使用我的示例略微提速.