如何移除 (//) 塊和標籤?
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 標籤,那麼您可以使用第二種方法。