全局替换时允许的变量标识符

Is variable identifier allowed on global replace?

本文关键字:变量 标识符 替换 全局      更新时间:2023-09-26

当变量传递给全局替换函数时,它似乎将其解析为字符串而不是变量。换句话说,这段代码并没有像期望的那样工作:

var s = "stack overflow";
var t = "o";
var r = s.replace(/t/gi,"");
//returns: sack overflow
//when should return: stack verflw

按预期替换t而不是o。我注意到在正则表达式的一些例子,这可能是太重了,并认为这可能是一个简单的修复。我试过'/t'/gi,但没有多大作用。如果有人知道是否以及如何这是可能的,请提供答案。谢谢。

在"/t"中,这是指包含一些字母而不是对象或变量的模式。这应该是合适的方式,

var s = "stack overflow";
var t = new RegExp("o", "g");
var r = s.replace(t,"");
alert(r);

jsFiddle

您应该使用新的RegExp()方法:

var s = "stack overflow";
var t = "o";
var r = new RegExp(t,'gi');
s.replace(r,'');