2012-01-20 2 views

ответ

2

Измените регулярное выражение, чтобы быть не жадный:

var result = str.match(/({{\S+?}})+/ig); 

Я добавил ? после \S+. Это делает матч + максимально возможным.

+0

+1 для указания * актуальной * проблемы :) – Ryan

2

Вы должны экранировать фигурные скобки, поскольку они являются специальным синтаксисом для указания how many repeats to match

/({{\S+?}})+/ig

Edit: я не заметил, что на самом деле добавив non-greedy specifier сделали Хитрость.

+0

спасибо, он работает! –

+0

Это не проблема. Они недвусмысленны, если они не имеют форму '{\ d +}' или '{(\ d +)?, (\ D +)?}'. Ваш нежелательный спецификатор сделал трюк. – Ryan

+0

@minitech вы правы. oops – Esailija

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