Javascripte expression régulière

karlito139 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
karlito139 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Salut à tous


Je suis en train de faire une petite fonction de remplacement de balise pour du BBcode. elle marche "bien", au petit détail qu'elle ne prend pas en compte les element en plusieurs blocs. Par exemple pour la balise [p]/p, si je tape :

[p]salut/p

Ca passe impec

par contre si je met :

[p]
salut

ca va
/p

Ca ne passe pas. Tant que j'ai un bloc de text ca va bien, au dela ca ne marche plus.


function BBcode(text){   

    
 var balisebbcode            = new Array("g"        ,"img"        ,"p");   
 var balisehtmlouvrante   = new Array("<strong>" ,"<img src=\"","<p>");   
 var balisehtmlfermante   = new Array("</strong>","\"/\>"      ,"</p>");   
    
    
 for(i=0; i<balisebbcode.length; i=i+1){   

  regex = "\\[" + balisebbcode[i] + "\\](.*[\n\r]*)\\[\/" + balisebbcode[i] + "\\]";   

  regex = new RegExp(regex, "g");   

  text = text.replace(regex, balisehtmlouvrante[i] + "$1" + balisehtmlfermante[i]);   
  alert(text);   

 }   

 return text;   

}   



Ainsi les retours à la ligne sont pris en compte, mais qu'une seul foix. Du coup j'ai voulu faire avec ce masque:

regex = "\\[" + balisebbcode[i] + "\\]([.*[\n\r]*]*)\\[\/" + balisebbcode[i] + "\\]";   


Mais là ca ne marche plus du tout....


Merci ;)


edit : les balises fermantes ne passent pas comme elles devraient, il y a bien les crochets autour.



A voir également:

1 réponse

karlito139 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
finalement j'ai trouvé une solution:

regex = "\\[" + balisebbcode[i] + "\\]([\\s\\S]*)\\[\/" + balisebbcode[i] + "\\]";
0