IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[regexp] \n en <br /> sauf dans un <pre>


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut [regexp] \n en <br /> sauf dans un <pre>
    Bonjour,

    J'essaye désespérément d'écrire cette regexp qui fait l'équivalent de nl2br en php soit transformer les retours à la ligne \n en <br />, alors ok c'est facile, d'ailleurs même c'est fait : (trouvé sur le net)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    nl2br: function (str) {
     
    	 	var br = '<br />';
     
    		return str.replace(/([^>]?)\n/g, '$1' + br + '\n');
    Mais la particularité sur laquelle j'essaye d'intervenir c'est :
    si les retour à la ligne sont à l'intérieur d'un <pre></pre> je souhaiterai ne pas appliquer la fonction et la ben j'y arrive pas

    la logique que j'applique :

    remplacer les \n dans un <pre> en ##n##
    appliquer nl2br
    puis rétablir ##n## en \n


    mais pas moyen de capturer ces fameux \n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = str.replace(/<pre>((\n)*([^<\/pre>|\n ]*)(\n)*)*<\/pre>/g, '<pre>1:$1 2:$2 3:$3 4:$4 5:$5</pre>');
    Quelqu'un qui serai à l'aise avec les regexp pourrai peut être me venir en aide ?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut
    Alors j'avance un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /(<pre>[^<\/pre>]*){1}(\n)+([^<\/pre>]*<\/pre>){1}/g
    avec cette regex j'en attrape un mais si il y en a plusieurs ??

    EDIT :

    vive le bricolage, avec cette solution pas des plus jolie mais fonctionnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    nl2br: function (str) {
                    // du texte please
            	str = (str + '');
     
                    // on sauvegarde
    	 	old = str;
     
                    // on modifie
    	 	str = str.replace(/(<pre>{1}[^<\/pre>]*)(\n)+([^<\/pre>]*<\/pre>{1})/g, '$1##n##$3');
     
                    // tant qu'il y a des modification
    	 	while (old !=  str) {
     
                            // on sauvegarde a nouveau
    	 		old = str;
     
                            // on modifie
    	 		str = str.replace(/(<pre>{1}[^<\/pre>]*)(\n)+([^<\/pre>]*<\/pre>{1})/g, '$1##n##$3');
     
    		}
     
     
    // nl2br
    	 	var br = '<br />';
     
    		str = str.replace(/([^>]?)\n/g, '$1'+br+'\n');
     
     
    // et c'est reparti pour un tour mais à l'envers
    		old = str;
     
    	 	str = str.replace(/(<pre>{1}[^<\/pre>]*)(##n##)+([^<\/pre>]*<\/pre>{1})/g, '$1\n$3');
     
    	 	while (old !=  str) {
     
    	 		old = str;
     
    	 		str = str.replace(/(<pre>{1}[^<\/pre>]*)(##n##)+([^<\/pre>]*<\/pre>{1})/g, '$1\n$3');
     
    		}
     
    		return str;
    Les regex en boucle c'est peut être un peu lourd pour le navigateur client

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/09/2009, 22h51
  2. [RegEx] PCRE - Remplacer mot sauf dans un href ?
    Par seb_perl dans le forum Langage
    Réponses: 7
    Dernier message: 22/06/2009, 17h46
  3. recherche de fichier partout sauf dans les archives.
    Par trois_1 dans le forum Windows XP
    Réponses: 1
    Dernier message: 21/01/2008, 10h24
  4. Exécution problématique (sauf dans Eclipse)
    Par L. Sierra dans le forum Applets
    Réponses: 8
    Dernier message: 19/09/2006, 11h53
  5. Tous les champs SAUF dans une table.
    Par Yepazix dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/08/2005, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo