【问题标题】:Javascript replacing HTML tag using regex matching groupJavascript 使用正则表达式匹配组替换 HTML 标记
【发布时间】:2018-09-10 02:00:17
【问题描述】:

我有以下字符串:

var x = '<p>Hello there <span contenteditable="false" class="fr-deletable">aaa</span>,<br></p><p>Hi <span contenteditable="false" class="fr-deletable">bbbb</span>,<br></p>';

我基本上想去掉所有&lt;span&gt;&lt;/span&gt; 标签,但保持内部内容完整。所以上面应该变成:

'<p>Hello there aaa,<br></p><p>Hi bbbb,<br></p>';

我尝试了一些方法:

x.replace(/<span.*>(.*)<\/span>/g, '$1');
x.replace(/<span.*>/g, '');

但这些都不能满足我的需要。请帮忙?

【问题讨论】:

标签: javascript jquery regex ecmascript-6


【解决方案1】:

const input = '<p>Hello there <span contenteditable="false" class="fr-deletable">aaa</span>,<br></p><p>Hi <span contenteditable="false" class="fr-deletable">bbbb</span>,<br></p>';
const output = input.replace(/<span [^>]+>([^<]+)<\/span>/g, '$1');
console.log(output);

【讨论】:

    【解决方案2】:

    最好是在解析完HTML之后再做,可以用jQuery来完成。

    var x = '<p>Hello there <span contenteditable="false" class="fr-deletable">aaa</span>,<br></p><p>Hi <span contenteditable="false" class="fr-deletable">bbbb</span>,<br></p>';
    
    console.log(
      $('<div>', {
        html: x
      }).find('span').replaceWith(function() {
        return this.innerHTML;
      }).end().html()
    )
    &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

    仅供参考: Using regular expressions to parse HTML: why not?

    【讨论】:

      【解决方案3】:

      试试这个:

      var x = '<p>Hello there <span contenteditable="false" class="fr-deletable">aaa</span>,<br></p><p>Hi <span contenteditable="false" class="fr-deletable">bbbb</span>,<br></p>';
      var y = x.replace(/(<sp|<\/sp)[^>]+>/g, "");
      console.log(y);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 2012-04-02
        • 2012-05-16
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多