javascript将所有字符串和变量替换为全局

javascript将所有字符串和变量替换为全局,javascript,replace,Javascript,Replace,如何替换所有sting+变量?为什么我不能将所有[0]和[1]替换为新的?下面是一些简单的例子,在实际情况中,[0][1][2]。。。有更多的条件。谢谢 var a='some thing [0] [1] [0] [1] '; for(var i=0; i<3; i++){ a.replace(new RegExp(" ["+i+"] ", 'g'),' new'); } alert(a); 我会这样做: var a='some thing [0] [1] [0] [1]

如何替换所有sting+变量?为什么我不能将所有[0]和[1]替换为新的?下面是一些简单的例子,在实际情况中,[0][1][2]。。。有更多的条件。谢谢

var a='some thing [0]  [1]  [0]  [1] ';
for(var i=0; i<3; i++){
  a.replace(new RegExp(" ["+i+"] ", 'g'),' new');
}
alert(a);

我会这样做:

var a='some thing [0]  [1]  [0]  [1] ';
a = a.replace(/\[[0-2]\]/g,' new');
alert(a);
在这里,for循环是多余的,因为正则表达式可以直接完成它。另外,我建议使用文字语法/../../


工作小提琴:

我会这样做:

var a='some thing [0]  [1]  [0]  [1] ';
a = a.replace(/\[[0-2]\]/g,' new');
alert(a);
在这里,for循环是多余的,因为正则表达式可以直接完成它。另外,我建议使用文字语法/../../

工作小提琴:因为

一,

正则表达式现在是0[0]的示例;这将匹配0您可能正在查找\\[+i+\\],因为括号是一个特殊字符

二,

您没有存储替换结果,您应该执行以下操作:

a=a.replacenew RegExp\\[+i+\\],'g','new'

来吧,你会得到

var a='some thing [0]  [1]  [0]  [1] ';
for(var i=0; i<3; i++){
  a = a.replace(new RegExp(" \\["+i+"\\] ", 'g'),'new');
}
alert(a);
一些新的东西,我希望这是预期的结果

最后但并非最不重要的一点是,这是对正则表达式的滥用,您可以很容易地做到

一,

正则表达式现在是0[0]的示例;这将匹配0您可能正在查找\\[+i+\\],因为括号是一个特殊字符

二,

您没有存储替换结果,您应该执行以下操作:

a=a.replacenew RegExp\\[+i+\\],'g','new'

来吧,你会得到

var a='some thing [0]  [1]  [0]  [1] ';
for(var i=0; i<3; i++){
  a = a.replace(new RegExp(" \\["+i+"\\] ", 'g'),'new');
}
alert(a);
一些新的东西,我希望这是预期的结果


最后但并非最不重要的一点是,这是对正则表达式的滥用,您可以轻松地将[and]之间的所有数字替换为新的


将[和]之间的所有数字替换为新数字

字符串是不可变的,replace会返回新的、修改过的值。您必须自己将其重新分配给a变量,请参见:

不过,这还不足以让它工作,因为[]在正则表达式中表示a。要从字面上匹配它们,您必须使用反斜杠转义它们,并再次使用字符串文字:

a = a.replace(new RegExp(" \\["+i+"\\] ", 'g'), ' new');
现在,您可以使用实际的字符类一次匹配0到2之间的所有数字:

var a = 'some thing [0]  [1]  [0]  [1] ';
alert(a.replace(/\[[0-3]\]/g, ' new')); // regex literal to simplify syntax
字符串是不可变的,replace会返回新的、修改过的值。您必须自己将其重新分配给a变量,请参见:

不过,这还不足以让它工作,因为[]在正则表达式中表示a。要从字面上匹配它们,您必须使用反斜杠转义它们,并再次使用字符串文字:

a = a.replace(new RegExp(" \\["+i+"\\] ", 'g'), ' new');
现在,您可以使用实际的字符类一次匹配0到2之间的所有数字:

var a = 'some thing [0]  [1]  [0]  [1] ';
alert(a.replace(/\[[0-3]\]/g, ' new')); // regex literal to simplify syntax