如何替换字符串中的 $1 , $2

How to replace $1 , $2 in string

var params = ['tom' , 'harry'];

var string = 'hello  and   how aa are you  and ';

我试过的

var params = ['tom' , 'harry'];
var string = 'hello  ,  how aa are you  , ';
var temp;
for(var i = 0; i<params.length ; i++)
{
  temp = string.replace(/[]+/g,params[i]);   
}

Firefox 控制台错误输出:"hello harry ,harry2 how aa are you harry , harry2"

Final Output : hello tom and harry how are you tom and harry

要回答这个问题,如果您真的想用 tom 替换 $1,您可以搜索 \$1(注意转义的 $)并替换为 tom.

我感觉你真正的意思是你在 $1$2 出现的位置有一些文本。如果是这种情况,您真的不需要查找和替换;你只需要在这些位置输出你的变量。

一个解决方案:

string.replace(/$1/g, params[0]).replace(/$2/g,params[1])

更多说明:

我之所以把 </code> 写成 <code>$1 是因为 , ,... 在正则表达式中有特殊的含义。它们被视为特殊字符。例如,如果您想在字符串中搜索 .(点),那么您不能只将 . 放在正则表达式中,因为在正则表达式中 . 表示匹配字符串中的任何字符(也包括点);所以,为了在你的字符串中找到 . 你必须在点之前放置(斜杠 \),比如 \. ,在正则表达式中,这样正则表达式引擎可以找到准确的 . 字符。

var params = ['tom', 'harry'];
            var string = "hello  en ";
            string = string.replace("", params[0]).replace("", params[1]);

这是对@muhammad imran 解决方案的灭绝,使用 for 循环

var params = ['tom' , 'dick', 'harry'];

var string = 'hello  ,  how  aa are you  ,   , ';

var stringToFire = ''

for(var i = 0 ;i<params.length;i++)
{
  var forDollar = i+ 1;
  var forReplacer =   i;
  stringToFire = stringToFire + '.replace(/\$dollarNumber/g, params[donkey])'.replace('dollarNumber',forDollar).replace('donkey',forReplacer );
}

var ultimateString = 'string'+stringToFire

eval(ultimateString);

Final Output : hello tom and harry how are you tom and harry

Replace using SPLIT and JOIN - Don't always need to use .replace

var params = ['tom' , 'harry'];
var string = 'hello  ,  how aa are you  , ';

for(var i = 0; i<params.length ; i++)
{
  var st = '$' +( i + 1);

  string = string.split(st).join(params[i])
}

OutPut : "hello tom ,harry how aa are you tom , harry"