【问题标题】:How to remove the outermost XML element tags pair, using Javascript?如何使用 Javascript 删除最外层的 XML 元素标签对?
【发布时间】:2020-08-05 12:01:58
【问题描述】:

如果我有一串:

 <p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>

我想从 Javascript 中的字符串中删除最外面的一对,在这种情况下是第一个

和最后一个

,这样结果将是一个字符串:
 Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> 

我该怎么做?我已经尝试过使用 Regex 和 Jquery,但我不能以其他内部

不会被删除的方式做到这一点。

谢谢。

【问题讨论】:

  • &lt;p&gt;&lt;div&gt;&lt;/div&gt;&lt;/p&gt; 不是有效的 HTML。在有效的 HTML 上,您可以使用 $(str).html()
  • @User863 谢谢,让我编辑一下。
  • @User863 问题在于它删除了所有我不想要的内部

    标签。我只想删除外部

    标记。你的作品的结果是: Abcdefg abcdefg

标签: javascript html xml string tags


【解决方案1】:

只有短语内容在p 标签内有效。

Available Phrasing contents

让我们考虑拥有有效的 html

var str = ' <p> Abcdefg <span> abcdefg <span> abcdefg </span> <span> abcdefg </span> </span> </p>'

var res = $(str).html()

console.log(res)
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

使用正则表达式

var str = '<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>'

var res = str.replace(/\<(.*?)\>(.*)\<\/(\1)\>/g, '$2')

console.log(res)

【讨论】:

    【解决方案2】:

    Here:

    const regex = /<(?<tag>\w+)>(?<content>.*)<\/\k<tag>>/;
    
    const str = '<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>';
    
    const result = str.replace(regex, '$2');
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      function remove_tag(text, tag) {
        const regex = new RegExp(`^<${tag}>|</${tag}>$`, 'g');
        return text.replace(regex, "").trim();
      }
      
      let text = "<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>";
      const result = remove_tag(text, "p");
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多