开发者

Why does my JavaScript regex not work?

I don't understand why, but this code gives me a JavaScript error:

<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"]));

&l开发者_如何学编程t;/script>

Error

Exception thrown: invalid quantifier

What's wrong with it?


I believe you have to escape the { and }.

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;
};


The { and } have special meaning within a regex. They are used to specify exact quantifiers.

To treat them literally, just drop two backslashes before them like so: \\{ and \\}.

One does not work, as I just found out. It must treat one of them as regex delimiters.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜