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.
精彩评论