JeuWeb - Crée ton jeu par navigateur

Version complète : [Javascript] RegExp Multiple
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Bonjour à tous,
Je suis en train de bosser sur un système de prévisualisation en Javascript à l'aide des RegExp. Mais seulement il ne m'applique que la transformation qu'une fois :(
(j'imagine qu'il doit manquer un parmetre dans mon regExp mais je vois pas ou ...)

Voila mon code :
Code PHP :
<script language="Javascript">
    function 
BBcode(){
        var 
string document.getElementById('txt').value;

        var    
gras = new RegExp("\\[g\\](.+)\\[/g\\]""gi");
        var 
italique = new RegExp("\\[i\\](.+)\\[/i\\]""gi");
        var 
image = new RegExp("\\[img\\](.+)\\[/img\\]""gi");
        var 
url_1 = new RegExp("\\[url\\](.+)\\[/url\\]""gi");
        var 
url_2 = new RegExp("\\[url=(.+)\\](.+)\\[/url\\]""gi");
        var 
couleurs = new RegExp("\\[c=(.+)\\](.+)\\[/c\\]""gi");
        var 
sautdelignes = new RegExp("\n""gi");
        var 
spoiler = new RegExp("\\[spoiler\\](.+)\\[/spoiler\\]")
            
str string.replace(gras"<strong>$1</strong>");
            
str str.replace(italique"<em>$1</em>");
            
str str.replace(image"<img src=\"$1\">");
            
str str.replace(url_1"<a href=\"$1\">$1</a>");
            
str str.replace(url_2"<a href=\"$1\">$2</a>");
            
str str.replace(couleurs"<span style=\"color : $1\">$2</span>");
            
str str.replace(sautdelignes"<br />");

    if(
string.length 500){
            if(
confirm('Votre chaine fais plus de 500 caractères, le reste ne sera pas enregistré, voulez vous quand même voir la prévisulation ?')){
                
document.getElementById('previewer').innerHTML str;
            }
            else{
                
/*On ne montre pas la prévisualition ... */
                
document.getElementById('previewer').innerHTML '<em>Message trop long</em>';
            }

        }

        else{
            
document.getElementById('previewer').innerHTML str;
        }
    }
</script> 
Code PHP :
search = new Array(
          /[
img](.*?)=1[/img]/,
          /[
url=([w]+?://[^ "\n\r\t<]*?)\](.*?)\[\/url\]/,
          /\[url\]((www|ftp|)\.[^ \\"
nrt<]*?)[/url]/,
          /[
url=((www|ftp|).[^ "\n\r\t<]*?)\](.*?)\[\/url\]/,
          /\[email\](([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+))\[\/email\]/,
          /\[b\](.*?)\[\/b\]/,
          /\[url\](http:\/\/[^ \\"
nrt<]*?)[/url]/);

replace = new Array(
          
"<img src=\"$1\" alt=\"An image\">",
          
"<a href=\"$1\" target=\"blank\">$2</a>",
          
"<a href=\"http://$1\" target=\"blank\">$1</a>",
          
"<a href=\"$1\" target=\"blank\">$1</a>",
          
"<a href=\"mailto:$1\">$1</a>",
          
"<b>$1</b>",
          
"<a href=\"$1\" target=\"blank\">$1</a>");

for(
0search.lengthi++) {
     
text text.replace(search[i],replace[i]);


Quelque chose dans ce style la.
merci Anthor mais mon problème n'est pas résolu.

En effet le code que tu me proposes là ne me permais pas de modifier plusieurs fois une même occurence ...
Suffit juste de l'adapter à ton cas 34
nan tu n'as pas bien compris, le meilleur devrait être un exemple :
je met
Code :
[b]gras[/b] et un deuxieme [b]gras[/b]
et ça ne me met pas le deucieme "gras" en gras 34
Code PHP :
function BBCode()
{
    var 
text document.getElementById('txt').value;

    
search = new Array(
          /[
img](.*?)=1[/img]/ig,
          /[
email](([a-z0-9&-_.]+?)@([w-]+.([w-.]+.)?[w]+))[/email]/ig,
          /[
b](.*?)[/b]/ig,
          /[
url](http://[^ "nrt<]*?)[/url]/ig);

    replace = new Array(
          "
<img src="$1\" alt=\"An image\">",
          
"<a href=\"mailto:$1\">$1</a>",
          
"<b>$1</b>",
          
"<a href=\"$1\" target=\"blank\">$1</a>");

    for(
0search.lengthi++) {
         
text text.replace(search[i],replace[i]);
    };

    
alert(text);

    return;    

URLs de référence