JavaScript替换方法不会删除正则表达式中编码的结束标记,如果它打破嵌套

Tar*_*rik 1 javascript wordpress jquery

我很抱歉这个可怕的问题,希望有人可以帮我改一下,但请查看我的代码:

jQuery(document).ready(function($) {
    var content = $('.content');
    var text = content.html();
    console.log(text);
    text = text.replace(/<span>/g, '');
    text = text.replace(/<\/span>/g, '');
    content.html(text);
    console.log(text, content.html());
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/tikitariki/cttmngzq/

基本上,我正在删除一些HTML以清除一些样式.我使用该replace()方法删除这些span标签.但是,从阅读文档,我不明白为什么它不删除内部</span>标记<h3>.我不想删除它,这是我的目标,但代码明确表示要删除所有</span>.换句话说,它对我想要使​​用它的效果太好了,我不确定这是否是预期的行为.

我正在使用jQuery和Wordpress.我不确定他们是否与这个"奖金"功能有关.

<div class="content">
  <h1><span>Hey</span></h1>
  <h2><span>You</span></h2>
  <h3><span>I'm <span class="special">Special</span></span></h3>
</div>
Run Code Online (Sandbox Code Playgroud)

这是一个问题的原因是因为没有文档似乎引用这种HTML标签保护能力replace().我喜欢使用Mozilla的文档.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

Ror*_*san 5

不要使用正则表达式.jQuery有很多修改DOM的方法,而不会破坏文本.假设您要删除span标记但保留其中的文本,它在jQuery中是一个单行:

$('.content span').not('.special').contents().unwrap();
Run Code Online (Sandbox Code Playgroud)

更新了小提琴