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 :

Chaîne contenant saut de ligne [RegExp]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut Chaîne contenant saut de ligne
    Bonjour tout le monde,

    J'ai besoin de supprimer de mon textarea, toutes les balises <p> que je récupère à partir de copier coller de word ou de pages internet.

    N'étant un pro des expressions régulières, je m'aide à partir d'un site pour les construire. Sur ce site, je suis arrivé à avoir une expression régulière de cette forme :
    et le code généré correspondant serait celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg = new RegExp("<p\\s*(.=\\\".*\\\")*>", "ig");
    mastring = mastring .replace(reg, "");
    J'arrive à les enlever pratiquement toutes, mais j'ai un ennui quand il y a un saut de ligne.
    Par exemple, avec cet exemple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p>aze aze <p a="az" rte="rterte:orityroity szetz:zerzre" zerwxc:"zerzer" wxcx="zerzer">a <test>
    , j'obtiens ceci :
    ce qui est super.

    Par contre, si j'ai cet exemple suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p>aze aze <p a="az" rte="rterte:orityroity szetz:zerzre"
     zerwxc:"zerzer" wxcx="zerzer">a <test>
    , ça ne fonctionne plus du tout.
    Avez-vous une idée que je pourrais tester ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    "igm" ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut
    J'avais essayé avec "igm", mais ça n'a pas fonctionné.
    Je crois que ça le saut de ligne qui n'est pas pris en compte dans le \s

    Edit: en fait, j'avais passé à remplacer le saut de ligne par un espace, mais je perdais toutes mes informations. En fait, mon expression régulière n'est pas correcte quand j'ai plusieurs balises <p>. Avec une, ça peut fonctionner.

    Enfin toujours est-il que je ne sais pas comment gérer ce saut de ligne directement avec les expressions régulières.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    non saut de ligne = [\r\n]*
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var str = '<p>aze aze <p a="az" rte="rterte:orityroity szetz:zerzre"\
     zerwxc:"zerzer" wxcx="zerzer">a <test>';
     
    console.log(str.replace(/<p[^>]*>/ig, ''));
    Et sinon pour maitriser la gestion des return et line feeds en regex :

    http://www.regular-expressions.info/dot.html
    http://www.regular-expressions.info/javascript.html

    There is indeed no /s modifier to make the dot match all characters, including line breaks. To match absolutely any character, you can use character class that contains a shorthand class and its negated version, such as [\s\S]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Par défaut
    Citation Envoyé par TheGwy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(str.replace(/<p[^>]*>/ig, ''));
    Super, c'est exactement ce qu'il me fallait.
    Par contre, c'est le [^>] que j'ai du mal à comprendre, je pensais que le ^ indiquait le caractère de début.
    Je vais regarder les liens pour essayer de comprendre.

    Merci à vous et bonne journée.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ca dépend où il se trouve !

    Effectivement, en début de pattern, il correspond au début de la chaine testée, mais en début de classe, il correspond à un not.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Par défaut
    Je rajouterai juste qu'avec le recul il serait plus sage d'utiliser cette expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(str.replace(/<\/?p\b[^>]*>/ig, ''));
    Le "\/?" permet de matcher les balises fermantes "</p>"

    et le \b permet d'être sur que tu n'effacera que les balises <p> et non pas les balises <pre>, <prolog>, ...

    Attention à bien utiliser \b et non pas \s comme dans ton premier post, car si ton tag est coupé de cette manière :

    \s ne matchera pas la fin de ligne tandis que \b oui !

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

Discussions similaires

  1. Détecter saut de ligne dans une chaîne de caractères
    Par link256 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 30/03/2009, 15h25
  2. Supprimer les sauts de lignes en fin de chaîne
    Par pelloq1 dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/08/2008, 15h21
  3. Eviter les sauts de ligne dans chaîne concaténée
    Par Carlozi dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2008, 14h45
  4. Réponses: 3
    Dernier message: 11/06/2007, 11h20
  5. Réponses: 26
    Dernier message: 18/03/2006, 15h33

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