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

Mr *_*nch 1 javascript regex replace replaceall str-replace

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

var string = 'hello $1 and $2  how aa are you $1 and $2';
Run Code Online (Sandbox Code Playgroud)

我尝试了什么

var params = ['tom' , 'harry'];
var string = 'hello $1 ,$2  how aa are you $1 , $2';
var temp;
for(var i = 0; i<params.length ; i++)
{
  temp = string.replace(/[$1]+/g,params[i]);   
}
Run Code Online (Sandbox Code Playgroud)

Firefox控制台错误输出:“你好哈里,harry2哈里,你好吗,哈里2”

最终输出:你好汤姆和哈利你好吗汤姆和哈利

Muh*_*ran 5

一种解决方案:

string.replace(/\$1/g, params[0]).replace(/\$2/g,params[1])
Run Code Online (Sandbox Code Playgroud)

更多说明:

我之所以这样说,$1\$1因为$1, $2,...在正则表达式中有特殊含义。它们被视为特殊字符。例如,如果要.在字符串中搜索(点),则不能仅将其放置.在正则表达式中,因为在正则表达式中.表示匹配字符串内的任何字符(也包括点);因此,为了.在您的字符串中查找,您必须在正则表达式内将\点(斜线)放在点之前,例如\.,以便正则表达式引擎可以找到确切的.字符。