bonjour,
je cherche à extraire de cette chaine...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href='toto.html'{/literal}"
...les blocs suivant à la l'aide d'une regexp Javascript :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
1/ {if a=="1"}test2.html{else}test3.html{/if}
2/ {assign var="test" value="tttt"}
3/ {if a>=3}test3.html{/if}
Je ne veux pas extraire le bloc :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{literal}location.href=''{/literal}
parce qu'il est encadré par des guillemets onclick="..."

Ces blocs sont des blocs smarty, les règles sont les suivantes :

{tag param}......{/tag}
ou
{tag param}
ou
{tag}

la regexp pourrait ressembler à ça mais marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
var t='{if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href=\'toto.html\'{/literal}"';
 
while ((v = /{[^}]*}/gi.exec(t))!=null){
  console.info(v);
}
J'obtiens la liste de tous les {..} mais pas les blocs smarty comme définit ci-dessus.

pouvez-vous m'aider ?