javascript - 用于从 XHTML 文件中删除 CDATA 包装的正则表达式

标签 javascript regex cdata

我正在尝试删除以下脚本中的 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/

相关文章:

regex - Notepad++增量替换

java - Stax 将 Text+CDATA+Text 视为单个 CHARACTERS 部分

javascript - _.defer 簇参数数组

javascript - html 如何从一次计算中获得多个即时结果

JavaScript/jQuery : Replace items in string matching {x} with "jQuery(' #resultsx'). val()"

python - 为什么有re.match()?

python - 读取文件直到python中的特定行

java - JSON - 是否有任何 XML CDATA 等价物?

java - 在 XmlObject 中添加数据

javascript - $scopeProvider <- $scope/未知提供者