Регулярки js

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2015

Здравствуйте.

Есть строка:

var tpl = "<div>{title}</div> <div>{description}</div>";

и при помощи регулярки:

console.log(tpl.match(/\{[^\}]+\}/g));

я вытаскиваю из неё

["{title}", "{description}"]

а мне нужны сами названия переменных, то есть вот так:

["title", "description"]

Вопрос: можно ли это сделать непосредственно в регулярном выражении или же нужно писать функцию, коротая будет потом всё это обрезать?

Ответы

▲ 3Принят

@Станислав Далинин

  1. Открываем http://javascript.ru/RegExp
  2. http://javascript.ru/regexp/exec

var tpl = "<div>{title}</div> <div>{description}</div>",
    regexp = /\{([^\}]+)\}/g, matches,
    results  = [];

while (matches = regexp.exec(tpl)) {
    results.push(matches[1]);
}
console.log(results);

var tpl = "<div>{title}</div> <div>{description}</div>";
var results = (tpl.match(/\{[^\}]+\}/g) || []).map(function (value) {
   return value.slice(1, -1) 
});
console.log(results);

var tpl = "<div>{title}</div> <div>{description}</div>";
var results = [];
tpl.replace(/\{([^\}]+)\}/g, function (_, value) {
    results.push(value);
});
console.log(results);