Javascript js正则表达式替换多个单词

Javascript js正则表达式替换多个单词,javascript,Javascript,我需要在下面的句子中将${conference name}替换为ABC,${conference day}替换为星期一。 谁能帮我学一下正则表达式吗 var text = "<td>${conference name}</td><td>${conference day}</td>" var list = ["${conferance name}", "${conference day}" ] for (var j = 1; j < lis

我需要在下面的句子中将${conference name}替换为ABC,${conference day}替换为星期一。 谁能帮我学一下正则表达式吗

var text = "<td>${conference name}</td><td>${conference day}</td>"

var list = ["${conferance name}", "${conference day}" ]

for (var j = 1; j < list.length; j++) {
            //Extracting the col name
            var colName  =   list[j].split("${");
            colName = colName.split("}")[0];
            //Replacing the col name
            text = text.replace(new RegExp('\\$\\{' + colName + '\\}', 'g'), "ABC");

        }
var text=“${conference name}${conference day}”
var list=[“${conference name}”,“${conference day}”]
对于(var j=1;j
如果我有${conference_name},上面的代码可以重新编译,但是如果中间有空格,代码就会失败

列表是一个动态数组。替换文本也是动态的。我只是将它们模拟为对象,以便在Regex语句中拟合它们


提前感谢。

绝对不需要正则表达式,因为您知道要搜索的确切字符串

var str = "<td>${conference name}</td><td>${conference day}</td>";
var list = {
  "conference name":"ABC",
  "conference day":"Monday"
};
var i;
for( i in list) {
  if( list.hasOwnProperty(i)) {
    str = str.replace("${"+i+"}",list[i]);
  }
}
怎么样

var r = {
        "conference name": "ABC",
        "conference day" : "Monday"
    },
    reg = new RegExp("\\$\\{" + Object.keys(r).join("\\}|\\$\\{") + "\\}", "g"),
    str = "<td>${conference name}</td><td>${conference day}</td>";

str = str.replace(reg, function(v) {
    return r[v.substring(2, v.length - 1)];
});
var r={
“会议名称”:“ABC”,
“会议日”:“星期一”
},
reg=new RegExp(“\\$\{”+Object.keys(r).join(“\\}\\\$\{”)+“\\}”,“g”),
str=“${会议名称}${会议日}”;
str=str.replace(寄存器,函数(v){
返回r[v.子字符串(2,v.长度-1)];
});

这里有一个版本,可以让您显式地参数化替换:

函数数据替换(repl,str){
var regexStr=Object.keys(repl.map)(函数){
返回s.replace(/([^\w\s])/g,“\\$1”);
}).加入(“|”);
return str.replace(新的RegExp(regexStr,'g'),函数(m){
return repl[m];//改为“repl”
});
}
变量替换={
“${conference name}”:“ABC”,
“${会议日}”:“星期一”
};
doReplace(替换,文本)/=>“ABCMonday”

以上代码的语法无效。请原谅语法错误。可能是打字错误。但这是我在更大的代码块中使用的逻辑。此外,正则表达式上没有语法错误,这是我想要的核心答案
str.replace(“${”+i+“}”,list[i])这将只重新安装一个实例。我选择了正则表达式,因为我需要替换文本中的所有instance。@Raghav使用这个:
str.replace(newregexp(${I+“}”,“g”),list[I])
.sorry@Vision这不会替换任何文本,因为要使正则表达式正常工作,您必须确保用正则表达式的含义转义每个符号。不过,这里有任何细绳都可以。谢谢。你能用列表[i]替换吗?列表是字符串数组。列表[i]=“${conference name}”已编辑!也看看小提琴!
    var str = "<td>${conference name}</td><td>${conference day}</td>";
    var list = ["${conference name}", "${conference day}" ];
    var listResult = ["ABC", "Monday" ];
function genericReplace(str, list, listResult) {    

    var escape = function(text) {
        return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
    };
    
    var escList = [];
    for (var i=0; i < list.length; i++) {
      escList.push( escape(list[i]) );
    }
    
    var regEx = new RegExp(escList.join('|'), "g");

    return str.replace(regEx, function(word) {
      return listResult[list.indexOf(word)];
    });
}
var r = {
        "conference name": "ABC",
        "conference day" : "Monday"
    },
    reg = new RegExp("\\$\\{" + Object.keys(r).join("\\}|\\$\\{") + "\\}", "g"),
    str = "<td>${conference name}</td><td>${conference day}</td>";

str = str.replace(reg, function(v) {
    return r[v.substring(2, v.length - 1)];
});