我正在尝试用Javascript替换字符串中所有出现的{0},{1},{2}等。
示例字符串:
var str = "Hello, my name is {0} and I'm {1} years.";
我尝试了以下方法来构建正则表达式:
var regex1 = new RegExp("{" + i + "}", "g")
var regex2 = new RegExp("\{" + i + "\}", "g")
两次尝试都会抛出错误:
Invalid regular expression: /{0}/: Nothing to repeat
我像这样使用替换:
str.replace(regex, "Inserted string");
找到了各种具有不同解决方案的StackOverflow帖子,但并不能解决我的问题。
答案 0 :(得分:1)
字符串文字"\{"
会生成字符串"{"
。如果你需要反斜杠,你需要逃避它:
"\\{"
这将产生正则表达式\{..\}
,这是正确的正则表达式语法。
话虽如此,你的方法不仅仅是奇怪的。使用正则表达式,你应该做这样的事情:
var substitues = ['foo', 'bar'];
str = str.replace(/\{(\d+)\}/, function (match, num) {
return substitutes[num];
});
换句话说,不要为每个值动态构造一个正则表达式;做一个匹配所有值的正则表达式,让你根据需要替换它们。