仅替换发生在第一个元素中

时间:2012-02-06 20:46:29

标签: javascript jquery regex

有人可以帮助解释为什么这只会取代' [m]'在第一个LI?剩下的就像#39; [m]'

一样
  aData[2] = "<li>1[m]</li><li>2[m]</li><li>3[m]</li>"

  $.html( aData[2].replace('[m]','[media]') )

5 个答案:

答案 0 :(得分:6)

使用正则表达式并将其设为 global

$.html( aData[2].replace(/\[m\]/g,'[media]') )

答案 1 :(得分:4)

你需要使用正则表达式替换javascript中的所有内容,在这种情况下它将是

$.html( aData[2].replace(/\[m\]/g,'[media]') )

答案 2 :(得分:1)

Javascripts replace方法仅替换第一个匹配的项目,除非您使用正则表达式:

http://davidwalsh.name/javascript-replace

答案 3 :(得分:1)

使用正则表达式文字/[m]/,而不是让字符串'[m]'隐式转换为正则表达式。这样您就可以添加/g(“替换所有”)标志:

  $.html( aData[2].replace(/[m]/g,'[media]') )

虽然我应该添加您实际上想要\[m\]而不是[m],以便您匹配文字方括号:

  $.html( aData[2].replace(/\[m\]/g,'[media]') )

答案 4 :(得分:0)

您需要将其作为全球替代品。

var mre = new RegExp( "[m]", "g" );

aData[2] = "<li>1[m]</li><li>2[m]</li><li>3[m]</li>";
$.html( aData[2].replace(mre,'[media]') );