用于从 XHTML 文件中删除 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>
>
问题:我应该如何修改正则表达式以另外删除这些前导和尾随 <
, >
标签?
I'm trying to remove the CDATA wrapper in the following script (content has to be wrapped by CDATA to pass XHTML validation):
<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, "");
It removes most to the CDATA mark-up except for the start/end (<
, >
) tags:
<
<p id="msg">Hello<p>
<p>nother test: <#= ddd.rtI #><p>
>
Question: How should I modify the regex to additionally remove these leading and trailing <
, >
tags?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以只替换原始字符串并跳过使用正则表达式:
在您的情况下:
JavaScript 中的正则表达式很慢。 因此,除了解决问题之外,使用我的示例您可能会发现速度略有提高。
You could just replace the raw string and skip using regular expressions all-together:
In your case:
Regular expressions in JavaScript are slow. So on top of you getting your problem solved, you might see a slight speed-increase using my example.
在第一个
replace
中的第一个斜杠后面添加一个<
和一个 '>' 还不够吗? 在最后一个替换中的最后一个斜杠之后? 如果您的正则表达式方言将这些尖括号视为魔术字符(很少这样做),您可以分别使用\<
和\>
,即用反斜杠转义它们。Isn't it enough to just add a
<
after the first slash in the firstreplace
and a '>' after the last slash in the lastreplace
? If your regex dialect takes these angle brackets as magic characters (few do) you can use\<
and\>
respectively, i.e., escape them with backslashes.