Найти и заменить на JavaScript - PullRequest
5 голосов
/ 04 января 2012

Я пытаюсь создать супер простое решение на основе JavaScript. Я хочу использовать метод JavaScript replace, чтобы найти все экземпляры фигурных скобок в шаблоне и заменить их соответствующими данными.

Например, если мой шаблон был: <p>My name is {{name}}. I am {{age}}.</p>

Я бы хотел получить результат: <p>My name is Olly. I am 19.</p>

Вот мой код: http://jsfiddle.net/2RkAG/

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

1 Ответ

4 голосов
/ 04 января 2012

$1 работает только если вы передаете строку напрямую.Он не работает так, как у вас, потому что person["$1"] вычисляется до того, как строка передана в .replace - и person["$1"] буквально равно undefined.

Вместо этого вы можете передать функцию: http://jsfiddle.net/2RkAG/1/. Функция вызывается для каждой замены и имеет переданные аргументы, которые эквивалентны, например, $1.

$result.html(template.replace(/{{(.*?)}}/g, function(a, b) {
    return person[b]; // a = complete match, b = first group
}));

Вам также не нужно экранировать первый {.

...