有時,開發人員需要通過 JavaScript 管理 HTML。例如,開發人員需要通過在 JavaScript 中訪問某些 HTML 節點來將它們附加到特定的 HTML 元素。
因此,在使用 JavaScript 將 HTML 字符串附加到任何 HTML 元素之前,我們需要評估要附加的字符串并檢查它是否有效。
如果我們附加具有開始選項卡但不包含結束標記的 HTML 字符串,則可能會在網頁中生成錯誤。因此,我們將學習使用 JavaScript 驗證 HTML 字符串的不同方法。
使用正則表達式驗證 HTML 字符串
程序員可以使用正則表達式來創建字符串的搜索模式。我們可以通過遵循完美匹配每個 HTML 字符串的規則來創建正則表達式模式。
之后,我們可以使用正則表達式的test()方法,該方法返回作為參數傳遞的字符串與正則表達式的匹配結果。
語法
用戶可以按照下面的語法將正則表達式與 HTML 字符串進行匹配。
let regexForHTML = /<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/; let isValid = regexForHTML.test(string);
登錄后復制
在上面的語法中,我們將字符串作為 test() 方法參數傳遞,該參數需要與 regexForHTML 正則表達式匹配。
正則表達式解釋
這里,我們已經解釋了正則表達式,我們用它來匹配 HTML 字符串
正則表達式分為三部分。
]*> – 這是常規的第一部分表達式,它與 HTML 字符串的開始標記相匹配。它建議開始標簽應包含“”。
(.*?) – 它是正則表達式的第二部分,表明打開標簽后字符串應至少包含一個字符。
– 這是正則表達式的第三部分,表示 HTML 字符串應包含 ‘”。
示例
在下面的示例中,我們創建了兩個不同的字符串。 string1 是有效的 HTML 字符串,string2 是無效的字符串。
我們創建了 validateHTMLString() 函數,該函數使用 test() 方法將字符串與正則表達式進行匹配。
<html> <body> <h3>Using the <i>regular expression</i> to validate the HTML string.</h2> <div id = "output"> </div> <script> let Output = document.getElementById("output"); // Creating the regular expression let regexForHTML = /<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/; let string1 = "<b> Hello users! </b>"; let string2 = "<Hi there!>"; function validateHTMLString(string) { // check if the regular expression matches the string let isValid = regexForHTML.test(string); if (isValid) { Output.innerHTML += "The " + string + " is a valid HTML stirng <br/>"; }else{ Output.innerHTML += "The " + string + " is not a valid HTML stirng <br/>"; } } validateHTMLString(string1); validateHTMLString(string2); </script> </body> </html>
登錄后復制
使用 HTML 元素的 nodeType 屬性
我們可以創建一個虛擬 HTML 元素,并使用該元素的 innnerHTML 屬性附加一個字符串作為該元素的內部 HTML。之后,我們可以使用每個子節點的nodeType屬性來檢查它是否是HTML元素的類型。
對于任何 HTML 元素,其 nodeType 屬性值都等于 1。
語法
用戶可以按照以下語法使用 HTML 元素的 nodeType 屬性來驗證 HTML 字符串。
var element = document.createElement("p"); element.innerHTML = string; var childNodes = element.childNodes; for (var i = 0; i < childNodes.length; i++) { if (childNodes[i].nodeType != 1) { // string is not valid return; } if (childNodes[i].nodeType == 1 && i == childNodes.length - 1) { // string is valid return; } } // string is not valid
登錄后復制
在上面的語法中,我們檢查每個子節點的節點類型,以驗證該字符串僅包含 HTML 節點。
步驟
用戶可以按照以下步驟來實現上述語法。
第 1 步 – 創建一個虛擬 HTML 元素。它可以是 div、p 或任何其他將字符串存儲為 HTML 的元素。
第2步 – 使用虛擬元素的innerHTML屬性,并將字符串作為HTML存儲到其中。
步驟 3 – 使用 childNodes 屬性獲取虛擬元素的所有子節點。
步驟 4 – 使用 for 循環迭代虛擬元素的每個子節點。
第5步 – 在for循環中,檢查每個子元素的節點類型,如果不等于1,則表示該字符串不是有效的HTML字符串,并返回任何從那里終止函數的值。
Step 6 – 如果迭代所有子節點時到達最后一個子節點,并且最后一個子節點也有效,則意味著 HTML 字符串有效并返回任意值以終止函數。
示例
在下面的示例中,我們創建了 validateHTMLString() 函數,該函數實現上述步驟來驗證 HTML 字符串。
<html> <body> <h3>Using the <i> node Type property </i> to validate the HTML string.</h3> <div id = "output"> </div> <script> let output = document.getElementById("output"); let string1 = "<b> This is an valid HTML! </b>"; let string2 = "<Hi there!"; function validateHTMLString(string) { var element = document.createElement("p"); element.innerHTML = string; var childNodes = element.childNodes; for (var i = 0; i < childNodes.length; i++) { if (childNodes[i].nodeType != 1) { output.innerHTML += "The string is not valid HTML string! <br/>"; return; } if (childNodes[i].nodeType == 1 && i == childNodes.length - 1) { output.innerHTML += "The " + string + " is a valid HTML string! <br/>"; return; } } output.innerHTML += "The string is not valid HTML string! <br/>"; } validateHTMLString(string1); validateHTMLString(string2); </script> </body> </html>
登錄后復制
用戶學習了三種不同的方法來檢查 HTML 字符串是否有效。最好的方法是使用正則表達式,它允許我們通過編寫一行代碼來驗證 HTML 字符串。
以上就是如何使用 JavaScript 檢查字符串是否為 html?的詳細內容,更多請關注www.92cms.cn其它相關文章!