替换javascript字符串中的${…}?

替换javascript字符串中的${…}?,javascript,regex,string,replace,str-replace,Javascript,Regex,String,Replace,Str Replace,如何替换javascript字符串中${…}的所有实例?例如: var before = "My name is ${name} and I like ${sport} because ${sport} is challenging." 变成 var after = "My name is Bob and I like soccer because soccer is challenging." 我试着从中找到最佳答案,但你不能有一个以符号开头的钥匙 非常感谢 修改您链接的问题的答案,您可以

如何替换javascript字符串中${…}的所有实例?例如:

var before = "My name is ${name} and I like ${sport} because ${sport} is challenging."
变成

var after = "My name is Bob and I like soccer because soccer is challenging."
我试着从中找到最佳答案,但你不能有一个以符号开头的钥匙


非常感谢

修改您链接的问题的答案,您可以只匹配名称的一部分,并将其用作键:

var str = "My name is ${name} and I like ${sport} because ${sport} is challenging.";
var mapObj = {
   name:"Bob",
   sport:"soccer"
};
str = str.replace(/[$]{([^{}]+)}/g, function(match, key){
  return mapObj[key];
});
匿名函数的第二个参数将填充模式中第一对括号内匹配的内容,即[^{}]*匹配的内容

当然,您应该添加一些健全性检查,以确保您的密钥确实存在于地图中。或者,使用另一个问题的方法,只需在模式中列出允许的名称:

/[$]{(name|sport)}/g

修改链接问题的答案,您可以只匹配部分名称,并将其用作键:

var str = "My name is ${name} and I like ${sport} because ${sport} is challenging.";
var mapObj = {
   name:"Bob",
   sport:"soccer"
};
str = str.replace(/[$]{([^{}]+)}/g, function(match, key){
  return mapObj[key];
});
匿名函数的第二个参数将填充模式中第一对括号内匹配的内容,即[^{}]*匹配的内容

当然,您应该添加一些健全性检查,以确保您的密钥确实存在于地图中。或者,使用另一个问题的方法,只需在模式中列出允许的名称:

/[$]{(name|sport)}/g

你试过什么了吗?你试过什么了吗?这真是个邪恶的天才。我真的需要复习一下我的正则表达式,非常感谢你快速简洁的回答@user1464011我链接的教程是一个非常好的起点;这是一个邪恶的天才。我真的需要复习一下我的正则表达式,非常感谢你快速简洁的回答@user1464011我链接的教程是一个非常好的起点;