2009-06-26 9 views
0

からCDATAラッパーを削除する(内容はXHTMLの検証に合格するために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> 
> 

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

答えて

5

あなただけの生の文字列を置換して、正規表現にすべて一緒に使用してスキップすることができます:

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

をお使いの場合:JavaScriptで

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

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

正規表現は遅いです。だからあなたの問題を解決する上に、私の例を使ってわずかなスピードアップが見られるかもしれません。

0

はそれだけで最後replaceの最後のスラッシュの後に「>」最初replaceとの最初のスラッシュの後に<を追加するために十分ではないですか?あなたの正規表現の方言がこれらの角括弧を魔法のように扱う場合は、\<\>をそれぞれ使用することができます。つまり、バックスラッシュでエスケープします。

関連する問題