javascript - 替换几乎所有的 HTML 标签,而不是在 JS 中的字符串中

标签 javascript html string replace

我需要从字符串中替换几乎所有的 HTML 标签。
标签的内容应该保留。
我想保留几个标签:

  • 电话
  • ul
  • ol
  • b

  • 例如。:
    INPUT:
    "<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>"
    ​
    OUTPUT:
    "<p>TEXT</p>container<p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li>Another list element: 0.2</li></ul>span element"
    
    我知道我可以通过一一替换所有标签来做到这一点:
    string.replace(/<\/span>/g, '');
    
    也许有更快的选择。
    我怎样才能实现它?

    最佳答案

    最好避免使用正则表达式来解析 Html在您的情况下,您可以使用 html 解析器,例如 DOMParser

     htmls = `<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>`;
    let parser = new DOMParser();
    let doc = parser.parseFromString(htmls, "text/html");
    let span = doc.getElementsByTagName("span");
    let sr = doc.getElementsByTagName("strong");
    let elmarray = [...Array.from(span), ...Array.from(sr)];
    elmarray.forEach((e) => {
     e.outerHTML = e.innerHTML;
    });
      console.log(doc.body.innerHTML);

    但是,如果您的 html很简单,你可以使用 replace和谨慎的正则表达式

    html =
    "<p>TEXT</p><div>container</div><p></p><ul><li><b>list element</b>: 0.1 [mm]</li><li><strong>Another list element</strong>: 0.2</li></ul><span>span element</span>";
    r = html.replace(/(<\/?span>|<\/?strong>)/g, "");
    console.log(r);

    关于javascript - 替换几乎所有的 HTML 标签,而不是在 JS 中的字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63408474/

    相关文章:

    html - 如何匹配文本输入框的大小和最大长度?

    javascript - 在页面上的所有脚本完全加载后运行 js 函数

    java - JAVA中如何无需第三方解析JSON字符串

    javascript - 在 ajax 调用后使用 html() 插入选项后选择不起作用(Bootstrap Selectpicker)

    JavaScript 继承和数组

    html - 如何在按钮上强制使用表单标签

    c - 如何使 strcmp() 在我的 C 程序中工作

    javascript - 从 js 函数调用引导模式

    javascript - CLNDR.js 和 Underscore.js 模板问题

    python - 连接字符串?