0

次のスクリプトで CDATA ラッパーを削除しようとしています (XHTML 検証に合格するには、コンテンツを CDATA でラップする必要があります)。

<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> 
>

<質問: これらの先頭と末尾の ,>タグをさらに削除するには、正規表現をどのように変更すればよいですか?

4

2 に答える 2

5

生の文字列を置き換えるだけで、正規表現をすべて一緒に使用してスキップできます。

"FOO BAR".replace("FOO", ""); // replace "FOO" with "" (nothing)

あなたの場合:

var stringToSanitize = "//<![CDATA[ xxx //]]>";

var sanitizedString = stringToSanitize
                      .replace("//<![CDATA[", "")
                      .replace("//]]>", "");

JavaScript の正規表現は遅いです。したがって、問題が解決されることに加えて、私の例を使用すると、速度がわずかに向上する可能性があります。

于 2009-06-26T15:07:40.533 に答える
0

<最初の最初のスラッシュの後に追加replaceし、最後の最後のスラッシュの後に '>' を追加するだけで十分ではありませんreplaceか? 正規表現方言がこれらの山かっこを魔法の文字として使用する場合 (ほとんどそうではありません) \<\>それぞれを使用できます。つまり、バックスラッシュでそれらをエスケープします。

于 2009-06-26T15:09:07.740 に答える