如何移除 (//) 塊和標籤?


CDATA,是 Character Data 的縮寫,是一段程式碼塊,旨在防止解析器進行解析。有時我們的資料包含預定義的字元,例如 “<”“&”,這些字元不應被 XML 或 HTML 解析,因此我們將它們包含在 CDATA 塊中。您可以參考這篇文章瞭解更多關於 CDATA 的資訊。

要使用 JavaScript 從指令碼標籤中移除 CDATA 塊,我們可以採用以下方法。

  • 使用正則表示式
  • 使用 replaceAll 方法

使用正則表示式

正則表示式是一種字元模式,用於對任何文字進行匹配和替換操作。為了查詢和移除 CDATA 塊,我們使用以下正則表示式模式,並使用 String.replace( ) 方法。

正則表示式

/<!\[CDATA\[[\s\S]*?\s*\]\]>/g

語法

str.replace("regex", "")

這裡 str 是您要從中移除 CDATA 的字串,regex 是用於查詢塊資料的正則表示式。

示例

在下面的程式示例中,我們使用 String replace() 方法移除指令碼元素內部的 CDATA 塊和標籤。我們將上面定義的正則表示式作為引數傳遞給 replace() 方法,第二個引數為空字串。

<html> <body> <h2> Program to remove the (// <![CDATA[ , //]]>) blocks; tags inside a script element in JavaScript </h2> <script> let text = `<script type="text/javascript"> <![CDATA[ var A=new Array(); .......................... .......................... ]]> </script> some text2 ........................ some text3 ........................ some text4 ........................ <script type="text/javascript"> <![CDATA[ var B=new Array(); .......................... .......................... ]]> <script> some text5 ........................` text = text.replace(/<!\[CDATA\[[\s\S]*?\s*\]\]>/g, "") document.write(text) </script> </body> </html>

使用 replaceAll 方法

在這種方法中,我們將使用 String.replaceAll() 方法,此方法替換給定字串的所有出現。此方法接受兩個引數,第一個引數是要搜尋的模式或字串,第二個引數是要替換給定字串的字串。在這裡,我們將替換所有 <![CDATA[]]> 的出現,並替換為空字串。但您應該記住,我們無法移除 CDATA 的內容,我們只能移除 CDATA 標籤。

語法

string.replaceAll("str", "")

這裡 string 是指令碼塊字串,str 分別是 <![CDATA[]]>

示例

在下面的程式示例中,我們使用 String replaceAll() 方法移除指令碼元素內部的 CDATA 塊和標籤。我們將上面定義的正則表示式作為引數傳遞給 replaceAll() 方法,第二個引數為空字串。

<html> <body> <h2> Program to remove the (// <![CDATA[ , //]]>) blocks; tags inside a script element in JavaScript </h2> <script> let text = `<script type="text/javascript"> <![CDATA[ var A=new Array(); .......................... .......................... ]]> </script> some text2 ........................ some text3 ........................ some text4 ........................ <script type="text/javascript"> <![CDATA[ var B=new Array(); .......................... .......................... ]]> <script> some text5 ........................` text = text.replaceAll("<![CDATA[", "") text = text.replaceAll("]]>", "") document.write(text) </script> </body> </html>

在本教程中,我們討論了兩種從給定指令碼元素中移除 CDATA 塊的方法。我們建議您使用第一種方法,因為在第二種方法中,您無法移除 CDATA 塊內部的內容。如果您只想移除 CDATA 標籤,那麼您可以使用第二種方法。

更新於: 2022年8月11日

654 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告