用于插值匹配的JavaScript正则表达式;{0-99};

用于插值匹配的JavaScript正则表达式;{0-99};,javascript,regex,Javascript,Regex,我希望在JSON对象中生成自己的插值方法,如下所示: var exampleObj = { firstLabel: "Hello {0}, I like {1} & {2}", secondLabel: "Luke, I am your {0}", interpol : function (key, vals) { key = this[key]; return key.replace

我希望在JSON对象中生成自己的插值方法,如下所示:

var exampleObj = {
firstLabel: "Hello {0}, I like {1} & {2}",
secondLabel: "Luke, I am your {0}",
interpol : function (key, vals) {              
                   key = this[key];
                   return key.replace(/[0-9]/g, function myFunction(i){return vals[i];});
               }    
};

console.log(exampleObj.interpol('firstLabel', ['World','Fish','Chips']));

替换方法有效,但我只能匹配数字,而不能匹配花括号和数字?正确的正则表达式syntay是什么来匹配花括号之间的任何数字范围。非常感谢

您只需避开大括号,如下所示:

return key.replace(/\{[0-9]\}/g, function myFunction(i){return vals[i];});
                    ^------^---- here
\{[0-9]+\}

更新:正如前面所指出的,您可以通过replacen
[0-9]
by
\d

来缩短正则表达式,您只需避开大括号,如下所示:

return key.replace(/\{[0-9]\}/g, function myFunction(i){return vals[i];});
                    ^------^---- here
\{[0-9]+\}

更新:正如前面所指出的,您可以通过replacen
[0-9]
by
\d

来缩短正则表达式,您只需避开大括号,如下所示:

return key.replace(/\{[0-9]\}/g, function myFunction(i){return vals[i];});
                    ^------^---- here
\{[0-9]+\}

更新:正如前面所指出的,您可以通过replacen
[0-9]
by
\d

来缩短正则表达式,您只需避开大括号,如下所示:

return key.replace(/\{[0-9]\}/g, function myFunction(i){return vals[i];});
                    ^------^---- here
\{[0-9]+\}

更新:正如前面所指出的,您可以通过replacen
[0-9]
by
\d

来缩短正则表达式。我试过了,似乎只返回了“undefined”3次?但是,我认为这是中的函数的一个问题replace@MarkSandman我不信任你的
key=this[key]
,我认为你的问题不在于你的正则表达式,而在于你如何处理变量。你调试了代码并检查了每个变量的状态了吗?@Oriol谢谢,用你的注释更新了答案我试过了,我似乎只返回了“未定义”3次?但是,我认为这是中的函数的一个问题replace@MarkSandman我不信任你的
key=this[key]
,我认为你的问题不在于你的正则表达式,而在于你如何处理变量。你调试了代码并检查了每个变量的状态了吗?@Oriol谢谢,用你的注释更新了答案我试过了,我似乎只返回了“未定义”3次?但是,我认为这是中的函数的一个问题replace@MarkSandman我不信任你的
key=this[key]
,我认为你的问题不在于你的正则表达式,而在于你如何处理变量。你调试了代码并检查了每个变量的状态了吗?@Oriol谢谢,用你的注释更新了答案我试过了,我似乎只返回了“未定义”3次?但是,我认为这是中的函数的一个问题replace@MarkSandman我不信任你的
key=this[key]
,我认为你的问题不在于你的正则表达式,而在于你如何处理变量。你调试了代码并检查了每个变量状态了吗?@Oriol谢谢,用你的评论更新了答案