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”
最后的输出:你好汤姆和哈里你是如何汤姆和哈利
答案 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]);