Почему мой JavaScript-регулярное выражение не работает?

Я не понимаю, почему, но этот код дает мне ошибку 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>

Ошибка

Возникло исключение: недопустимый квантификатор

Что с ним не так ?

8
задан alex 30 August 2010 в 06:55
поделиться

2 ответа

Я полагаю, вам нужно избежать { и }.

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;
};
2
ответ дан 6 December 2019 в 00:53
поделиться

{ и } имеют особое значение в регулярном выражении. Они используются для указания точных квантификаторов.

Чтобы воспринимать их буквально, просто поставьте перед ними две обратные косые черты: \\{ и \\}.

Одна не работает, как я только что узнал. Он должен рассматривать один из них как разделитель регулярных выражений.

1
ответ дан 6 December 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: