有人可以帮助解释为什么这只会取代' [m]'在第一个LI?剩下的就像#39; [m]'
一样 aData[2] = "<li>1[m]</li><li>2[m]</li><li>3[m]</li>"
$.html( aData[2].replace('[m]','[media]') )
答案 0 :(得分:6)
使用正则表达式并将其设为 global :
$.html( aData[2].replace(/\[m\]/g,'[media]') )
答案 1 :(得分:4)
你需要使用正则表达式替换javascript中的所有内容,在这种情况下它将是
$.html( aData[2].replace(/\[m\]/g,'[media]') )
答案 2 :(得分:1)
Javascripts 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]') );