为什么我的JavaScript正则表达式不起作用?

为什么我的JavaScript正则表达式不起作用?,javascript,regex,string,Javascript,Regex,String,我不明白为什么,但这段代码给了我一个JavaScript错误: <script type="text/javascript"> String.prototype.format = function(values) { var result = this; for (var i = 0, len = values.length; i < len; i++) { result = result.replace(new RegExp("{" + i

我不明白为什么,但这段代码给了我一个JavaScript错误:

<script type="text/javascript">

String.prototype.format = function(values) {
    var result = this;
    for (var i = 0, len = values.length; i < len; i++) {
        result = result.replace(new RegExp("{" + i + "}", "g"), values[i]);
    }
    return result;
};

alert("Hi {0}, I'm {1}. Are you, {0}?".format(["Chris", "swell"]));

</script>

String.prototype.format=函数(值){
var结果=此;
对于(变量i=0,len=values.length;i
错误 引发异常:无效的量词


有什么问题吗?

我认为你必须避开
{
}

String.prototype.format = function(values) {
    var result = this;
    for (var i = 0, len = values.length; i < len; i++) {
        result = result.replace(new RegExp("\\{" + i + "\\}", "g"), values[i]);
    }
    return result;
};
String.prototype.format=函数(值){
var结果=此;
对于(变量i=0,len=values.length;i
在正则表达式中,
{
}
具有特殊意义。它们用于指定精确的量词

要按字面意思对待它们,只需在它们前面加上两个反斜杠:
\{
\}


正如我刚刚发现的那样,一个不起作用。它必须将其中一个视为正则表达式分隔符。

这就像JavaScript的
printf
:p作为旁注,您可以始终使用
参数
变量,而不是将数组作为参数传递。