我正在尝试删除以下脚本中的 CDATA 包装器(内容必须由 CDATA 包装才能通过 XHTML 验证):
<script id="tplTest" type="text/html">
//<![CDATA[
<p id="msg">Hello</p>
<p>Another test: <#= ddd.ArtID #></p>
//]]>
</script>
JavaScript:
var strTmp = document.getElementById("tplTest").innerHTML;
var strNew = strTmp.replace(/[\/(\/!\[)\]CDATA]/g, "").replace(/[(\/\/\]\])]/g, "");
它删除了除开始/结束( <
、 >
)标记之外的大部分 CDATA 标记:
<
<p id="msg">Hello<p>
<p>nother test: <#= ddd.rtI #><p>
>
问题:我应该如何修改正则表达式以另外删除这些前导和尾随 <
, >
标签?
最佳答案
您可以只替换原始字符串并跳过使用正则表达式:
"FOO BAR".replace("FOO", ""); // replace "FOO" with "" (nothing)
就您而言:
var stringToSanitize = "//<![CDATA[ xxx //]]>";
var sanitizedString = stringToSanitize
.replace("//<![CDATA[", "")
.replace("//]]>", "");
JavaScript 中的正则表达式很慢。因此,除了解决问题之外,使用我的示例您可能会发现速度略有提高。
关于javascript - 用于从 XHTML 文件中删除 CDATA 包装的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049603/