正则表达式不替换JS中的文本

时间:2015-02-16 11:45:36

标签: javascript jquery regex

我有具体的代码:

<script>

$.fn.revert = function(){
return this.each(function() {
var txt = $(this).html().replace(/<span class="gradientizer-done" style='color:rgb\(\d{1,3},\d{1,3},\d{1,3}\)>.<\/span>/g,'');
$(this).html(txt);
});
};

</script>

这段代码:

<p class="grad2" one="ffffff" second="000000">
<span class="gradientizer-done" style="color:rgb(255,255,255)"> </span>
<span class="gradientizer-done" style="color:rgb(219,219,219)">H</span>
<br>
<span class="gradientizer-done" style="color:rgb(109,109,109)">l</span>
</p>

基本上,恢复功能旨在将所有gradientizer-done类更改为文本,即在$(".grad2").revert()上运行恢复时我希望得到以下结果:

<p class="grad2" one="ffffff" second="000000">
 H<br>l</p>

但我发现<p></p>

没有变化

2 个答案:

答案 0 :(得分:2)

您在style=属性后面放了一个引号而不是双引号,而且您忘记在style属性的末尾加上双引号。

$(this).html().replace(/<span class="gradientizer-done" style="color:rgb\(\d{1,3},\d{1,3},\d{1,3}\)">.<\/span>/g,'');
                                                              ^                                    ^

答案 1 :(得分:2)

更好的解决方案是:

var $container = $(".grad2");
$container.find(".gradientizer-done").each(function(){
  $(this).after($(this).text())
  $(this).remove()
})