2013-06-12 2 views
6

Я кодирую простую функцию шаблонов в javascript.JavaScript REGEX Сопоставьте все и замените

У меня есть мой шаблон загрузки штрафа, теперь это часть, когда мне нужно разобрать содержимое на заполнители.

пример шаблона:

{{name}} is {{age}} 

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

{{name}} должен быть заменен содержимым, загруженным в массив javascript, например.

data.name 

data.age 

Это мое регулярное выражение: /\{\{(.*?)\}\}/

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

Заранее спасибо

+1

[Это то, что вы пытаетесь сделать?] (Https://github.com/janl/mustache.js) – Marty

+0

похожее, но не совсем. –

ответ

17

Ну, сначала вы будете нуждаться в g флаг на регулярное выражение. Это говорит JavaScript для замены всех совпадающих значений. Также вы можете предоставить функцию для метода replace. Что-то вроде этого:

var result = str.replace(/\{\{(.*?)\}\}/g, function(match, token) { 
    return data[token]; 
}); 

Второй параметр соответствует первой подгруппе и т. Д.

+1

+1 ... Завернул ваш код в функцию и использовал eval для оценки объектов с несколькими уровнями ... http://jsfiddle.net/hU7e2/ Может также запускать произвольный код. Поэтому будьте осторожны :) http://jsfiddle.net/hU7e2/1/ – Shanimal

Смежные вопросы