如何移除(//)程式碼塊;script元素內的標籤?
CDATA,即字元資料的縮寫,是一段程式碼塊,用於防止解析器進行解析。有時我們的資料包含預定義的字元,例如“<”和“&”,這些字元不應被XML或HTML解析,因此我們將它們包含在CDATA塊中。您可以參考這篇文章瞭解更多關於CDATA的資訊。
要使用JavaScript從指令碼標籤中移除CDATA塊,我們可以採用以下方法。
- 使用正則表示式
- 使用replaceAll方法
使用正則表示式
正則表示式是用於在任何文字上進行匹配和替換操作的字元模式。為了查詢和移除CDATA塊,我們使用以下正則表示式模式,並使用String.replace()方法。
正則表示式
/<!\[CDATA\[[\s\S]*?\s*\]\]>/g
語法
str.replace("regex", "")
這裡str是要從中移除CDATA的字串,regex是查詢程式碼塊資料的正則表示式。
示例
在下面的程式示例中,我們使用String replace()方法移除script元素內的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()方法移除script元素內的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標籤,那麼您可以選擇第二種方法。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP