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

时间:2015-07-07 12:16:01

标签: javascript regex replace str-replace replaceall

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

var string = 'hello $1 and $2  how aa are you $1 and $2';

我尝试了什么

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]);   
}

Firefox控制台错误输出:“你好哈利,哈里2你怎么哈利,哈里2”

  

最后的输出:你好汤姆和哈里你是如何汤姆和哈利

4 个答案:

答案 0 :(得分:4)

一个解决方案:

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

更多解释:

我将$1设为\$1的原因是因为$1, $2,...在正则表达式中具有特殊含义。它们被视为特殊字符。例如,如果你想在你的字符串中搜索.(点),那么你不能只将.放在正则表达式中,因为正则表达式.意味着匹配字符串中的任何字符(包括点也是);所以,为了在你的字符串中找到.,你可以在点之前放置(斜杠\),如\.,在正则表达式中,这样正则表达式引擎可以找到精确的{ {1}}角色。

答案 1 :(得分:1)

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

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

var string = 'hello $1 ,$2  how $3 aa are you $1 , $2  , $3';

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);
  

最后的输出:你好汤姆和哈里你是如何汤姆和哈利

答案 2 :(得分:0)

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

我有一种感觉,你真正的意思是你在 $ 1 $ 2 发生的位置得到了一些文字。如果是这种情况,你真的不需要寻找和替换;你只需要在那些位置输出你的变量。

答案 3 :(得分:0)

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