我尝试用数组索引值替换所有出现的字符串,如下所示。
var str = '<a href="{0}" title="{1}">{1}</a>';
var params= [];
params.push('Url', 'TitleDisplay');
for (i in params) {
var x = /'{' + i + '}'/g;
str = str.replace(x, params[i]);
}
无论我做什么,我似乎无法让它发挥作用。删除'/ g'适用于一个匹配,但不是全部。我知道这是基本的,但对于我的内心,我无法让它发挥作用。
答案 0 :(得分:4)
代码:
var rx = /{([0-9]+)}/g;
str=str.replace(rx,function($0,$1){return params[$1];});
replace方法循环遍历字符串(因为正则表达式中的/ g)并找到{n}的所有实例,其中n是数字。 $ 1捕获数字,函数用params [n]替换{n}。
答案 1 :(得分:2)
尝试使用:
var x = new RegExp("\\{" + i + "\\}", "g");
而不是:
var x = /'{' + i + '}'/g;
答案 2 :(得分:0)
如果需要动态
,可以构建正则表达式对象var str = '<a href="{0}" title="{1}">{1}</a>';
var params= [];
params.push('Url', 'TitleDisplay');
for (var i = 0; i < params.length; i++) {
var x = new RegExp('(\\{'+i+'\\})', 'g');
str = str.replace(x, params[i]);
}
alert(str);
答案 3 :(得分:0)
如果您想跳过正则表达式解决方案,那该怎么做..
function replaceAllOccurrences(inputString, oldStr, newStr)
{
while (inputString.indexOf(oldStr) >= 0)
{
inputString = inputString.replace(oldStr, newStr);
}
return inputString;
}