我正在嘗試用 HTML 標簽包圍 textContent 中的特定單詞,這可以假設通過這樣做來完成,element.textContent = element.textContent.replaceAll("word", "<h1>word<h1>");但它不會被決議,并且 element.innerHTML= element.innerHTML.replaceAll("word", "<h1>word<h1>");不起作用,因為存在該單詞可能是標簽名稱的風險。除了撰寫一個自定義替換函式來檢測標簽中的時間之外,還有其他解決方案嗎?
uj5u.com熱心網友回復:
您可以確保您嘗試填充的單詞不在標簽內。為此,您需要檢查其周圍的字符。只要它們沒有被兩邊包圍(或者確保它們像我在下面所做的那樣在左右兩邊都被包圍<),它們應該是唯一被替換的。試試下面的這個正則運算式示例:><some tag></?some tag>
function padTags(content, openTag, word, closeTag) {
console.log(content)
const replacement = openTag word closeTag;
const regex = `(?<!<[^<>]*)${word}(?![^<>]*>)`;
const pattern = new RegExp(regex, 'g');
return content.replace(pattern, replacement);
}
console.log(padTags(`<p >What's your favorite class?</p>`,
'<custom-tag>', 'class', '</custom-tag>'));
console.log(padTags(`<div><p >class</p></div>`,
'<custom-tag>', 'class', '</custom-tag>'));
console.log(padTags(`<div> class <p data-customvar="<class>">This is my class </p>class</div>`,
'<custom-tag>', 'class', '</custom-tag>'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472185.html
標籤:javascript html dom
上一篇:Lua-對表中的嵌套陣列進行排序
