Javascript 仅替换第一个元素中出现的

Javascript 仅替换第一个元素中出现的,javascript,jquery,regex,Javascript,Jquery,Regex,有人能帮忙解释一下为什么这只是替换第一个LI中的“[m]”吗?其余的都是“[m]” aData[2] = "<li>1[m]</li><li>2[m]</li><li>3[m]</li>" $.html( aData[2].replace('[m]','[media]') ) aData[2]=“1[m]2[m]3[m]” $.html(数据[2]。替换(“[m]”,“[media]”) 使用正则表达式并使其成为

有人能帮忙解释一下为什么这只是替换第一个LI中的“[m]”吗?其余的都是“[m]”

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

  $.html( aData[2].replace('[m]','[media]') )
aData[2]=“
  • 1[m]
  • 2[m]
  • 3[m]
  • ” $.html(数据[2]。替换(“[m]”,“[media]”)
    使用正则表达式并使其成为全局表达式:


    您需要使用正则表达式来替换javascript中的所有内容,在本例中是

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

    你需要让它成为一个全球性的替代品

    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]') );
    
    var mre=newregexp(“[m]”,即“g”);
    aData[2]=“
  • 1[m]
  • 2[m]
  • 3[m]
  • ”; $.html(aData[2].replace(mre,“[media]”);
    Javascripts
    replace
    方法仅替换第一个匹配项,除非使用正则表达式:


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

    尽管我应该补充一点,您实际上想要的是
    \[m\]
    ,而不是
    [m]
    ,以便您匹配文字方括号:

      $.html( aData[2].replace(/\[m\]/g,'[media]') )
    
    是的,你的不行:)。您需要删除正则表达式上的引号,使其成为正则表达式对象,而不是字符串。签入我提供的JSFIDLE。
      $.html( aData[2].replace(/[m]/g,'[media]') )
    
      $.html( aData[2].replace(/\[m\]/g,'[media]') )