Я не понимаю, почему, но этот код дает мне ошибку 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 = 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;
};
{
и }
имеют особое значение в регулярном выражении. Они используются для указания точных квантификаторов.
Чтобы воспринимать их буквально, просто поставьте перед ними две обратные косые черты: \\{
и \\}
.
Одна не работает, как я только что узнал. Он должен рассматривать один из них как разделитель регулярных выражений.