2014-01-21 2 views
0

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

Строка Я пытаюсь матч:

{{+ANYTEXT}} 

регулярное выражение используется в:

{{\s*\+\S*\s*}} 

Так в следующем примере:

<div class="rows"> 
    {{#Rows}} ssss1212XXXX {{+Anything.More.Evenmore}}$ssds {{/Rows}} 
</div> 
<div class="actions"> 
    {{#Actions}} ss[{{+UI.Action1}} {{+UI.Action2}} sdfsf {{/Actions}} 
    {{#Actions}} sss{{+UI.Action3}}{{+UI.Action4}} sdfsf {{/Actions}} 
</div> 

сопоставляет первый экземпляр: {{+ Anything.More.Evenmore}}; Следующие 2 действия как индивидуальные совпадения, Action1 и Action2 BUT соответствует последним 2 действиям в качестве одного совпадения.

Так что я пытаюсь понять, как сопоставить {{+ ANYTEXT}} с чем угодно, кроме} и {с обоих концов, но не включать их в соответствие. К сожалению, я потерпел неудачу. Любая помощь очень ценится.

+0

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

ответ

2

Вы можете использовать регулярное выражение:

({{\s*\+[^}]*\s*}}) 

DEMO

Объяснение:

enter image description here

Fiddle Demo

+0

Это фантастика - она ​​отлично работает. Благодаря! –

1

Добавить знак вопроса в \S*, чтобы сделать его менее жадным, и он работает. Test

/{{\s*\+\S*?\s*}}/g 
+0

Это также работает - есть ли разница между предыдущим ответом и этим эффектом? –

+0

Игнорирование соответствия скобок, которое не требуется для ответа выше, я так не думаю. – MildlySerious

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