【问题标题】:How can I remove HTML tags other than div and span from a string in JavaScript?如何从 JavaScript 中的字符串中删除除 div 和 span 之外的 HTML 标记?
【发布时间】:2021-09-15 21:37:36
【问题描述】:

我需要从 HTML 行中删除除 div 和 span 之外的所有标签。我该怎么做?

例子

const str = "<div><p></p><span></span></div>";
 remove(str)//<div><span></span></div>

【问题讨论】:

标签: javascript html regex


【解决方案1】:

要删除除特定标签之外的所有标签,可以使用以下正则表达式

const str = "<div><p></p><span></span></div>";
console.log(str.replace(/(<\/?(?:span|div)[^>]*>)|<[^>]+>/ig, '$1'));

【讨论】:

    【解决方案2】:

    一种选择是使用DomParserparseFromString() 方法将字符串解析为(临时)HTML。然后,您可以使用.remove() 删除目标元素,如果需要,最后使用toString() 转换回字符串:

    const str = "<div><p></p><span></span></div>";
    
    var parser = new DOMParser();
    var htmlDoc = parser.parseFromString(str, 'text/html').body;
    
    var spans = htmlDoc.getElementsByTagName('span');
    for (var i = 0; i < spans.length; i++) {
      spans[i].remove();
    }
    
    var parsed = htmlDoc.innerHTML.toString();
    console.log(parsed);

    【讨论】:

    【解决方案3】:

    您可以使用正则表达式 /&lt;\/?(?!\bdiv\b)(?!\bspan\b)\b\w+\b&gt;/greplaceAll

    let str = "<div><oz></oz><span></span><hjk></hjk></div>";
    
    let str1 = str.replaceAll(/<\/?(?!\bdiv\b)(?!\bspan\b)\b\w+\b>/g,'')
    
    console.log(str1);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2010-09-19
      • 2017-09-06
      相关资源
      最近更新 更多