Javascript中的regexp没有可重复的内容

Javascript中的regexp没有可重复的内容,javascript,regex,Javascript,Regex,我试图用Javascript替换字符串中出现的所有{0}、{1}、{2}等 示例字符串: var str = "Hello, my name is {0} and I'm {1} years."; 我尝试了以下方法来构造regexp: var regex1 = new RegExp("{" + i + "}", "g") var regex2 = new RegExp("\{" + i + "\}", "g") 两次尝试都会抛出错误: Invalid regular expression:

我试图用Javascript替换字符串中出现的所有{0}、{1}、{2}等

示例字符串:

var str = "Hello, my name is {0} and I'm {1} years.";
我尝试了以下方法来构造regexp:

var regex1 = new RegExp("{" + i + "}", "g")
var regex2 = new RegExp("\{" + i + "\}", "g")
两次尝试都会抛出错误:

Invalid regular expression: /{0}/: Nothing to repeat
我是这样用的:

str.replace(regex, "Inserted string");
var substitues = ['foo', 'bar'];
str = str.replace(/\{(\d+)\}/, function (match, num) {
    return substitutes[num];
});
找到了各种具有不同解决方案的StackOverflow帖子,但不能完全解决我的问题。

字符串literal
“\{”
导致字符串
“{”
。如果需要反斜杠,则需要将其转义:

"\\{"
这将产生regex
\{..\}
,这是正确的regex语法

话虽如此,您的方法非常奇怪。使用正则表达式,您应该执行以下操作:

str.replace(regex, "Inserted string");
var substitues = ['foo', 'bar'];
str = str.replace(/\{(\d+)\}/, function (match, num) {
    return substitutes[num];
});
换句话说,不要为每个值动态构造一个正则表达式;做一个与所有值匹配的正则表达式,并允许您根据需要替换它们。

字符串文字
“\{”
将生成字符串
“{”
。如果需要在其中使用反斜杠,则需要将其转义:

"\\{"
这将产生regex
\{..\}
,这是正确的regex语法

话虽如此,您的方法非常奇怪。使用正则表达式,您应该执行以下操作:

str.replace(regex, "Inserted string");
var substitues = ['foo', 'bar'];
str = str.replace(/\{(\d+)\}/, function (match, num) {
    return substitutes[num];
});
换句话说,不要为每个值动态构造一个正则表达式;只做一个与所有值匹配的正则表达式,并允许您根据需要替换它们。

可能相关:这是重复的(s+),例如可能相关:这是重复的(s+),例如。