【问题标题】:How to remove html tags with JavaScript keep only BR, B and I tags?如何使用 JavaScript 删除 html 标签只保留 BR、B 和 I 标签?
【发布时间】:2016-01-28 11:43:17
【问题描述】:

当用户单击按钮将其删除并仅保留 BR B 和 I 标签时,我想从 div 中删除富文本。我已经尝试过replace(/<\/?[^>]+(>|$)/g, "") 功能,但它会删除所有标签。

<div id="content" contenteditable></div>
<button id="remove">Remove</button>

<script>
$(document).on('click', '#remove', function(e) {
    var a = $("#content").html();
    a = a.replace(/<\/?[^>]+(>|$)/g, "");
    $("#content").html(a);
});
</script>

输入示例
&lt;p&gt;paragraph 1 &lt;b&gt;bold&lt;/b&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;paragraph 2 &lt;i&gt;italic&lt;/i&gt;&lt;/p&gt;

我想要什么
paragraph 1 &lt;b&gt;bold&lt;/b&gt;&lt;br&gt;&lt;br&gt;paragraph 2 &lt;i&gt;italic&lt;/i&gt;

【问题讨论】:

  • 您想只删除标签,还是同时删除这些标签的内容?
  • 我只想删除标签。
  • 提供样本输入和预期结果
  • 我更新了我的问题
  • &lt;i&gt;italic&lt;/i&gt; 如何成为输出的一部分?

标签: javascript jquery regex preg-replace


【解决方案1】:

仅保留 BR B 和 I 标签

尝试使用.replace()的函数参数,如果"b"或"br"返回空字符串,不区分大小写,在匹配中找不到

$(document).on('click', '#remove', function(e) {
    var a = $("#content").html();
    a = a.replace(/<\/?[^>]+(>|$)/g, function(match) {       
      return !/br|b/i.test(match) ? "" : match
    });
    $("#content").html(a);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="content" contenteditable>
<p>paragraph 1 <b>bold</b></p><br><br><p>paragraph 2</p>
</div>
<button id="remove">Remove</button>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
相关资源
最近更新 更多