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 :

Expression régulière: le premier espace


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 46
    Par défaut Expression régulière: le premier espace
    Bonjour.

    Je dispose d'une chaîne de caractère contenant plusieurs espaces.
    Je souhaite construire une expression régulière basée sur le premier espace de cette chaîne de caractère.

    Ci-dessous mon code JavaScript:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var titre = "Le repas de ce soir";
    var expression = new RegExp("\s{1}");
    var determinantList = titre.split(expression);
    Or, le contenu de la variable "determinantList" est:
    0: "Le repa"
    1: " de ce "
    2: "oir"
    Tandis que ce que je voudrais devrait être:
    0: "Le"
    1: "repas de ce soir"

    Comment faire?

    Merci.

  2. #2
    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
    L'utilisation du constructeur de RegExp pose des problèmes car il faut échapper les échappements.
    Il est donc largement préférable d'utiliser la forme littérale, plus souple et plus compréhensible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var expression = /\s{1}/;
    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

  3. #3
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Javascript n’implémentant pas entièrement les lookarounds et groupes non capturant des regs, il vaut mieux ruser un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var titre = "Le repas de ce soir";
    tab=[];
    temp=titre.split(' ');
    tab.push(temp.shift())
    tab.push(temps.join(' '))
    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 !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 46
    Par défaut
    Bonjour.

    En mettant :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    var expression = /\s{1}/;
    Ce qui correspond exactement à la même chose que l'expression régulière:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    var expression = /\s/;
    Le '{1}' ne sert donc à rien?
    J'obtiens alors comme résultat pour le contenu de la variable "determinantList":
    0: "Le"
    1: "repas"
    2: "de"
    3: "ce"
    4: "soir"

    Cependant, le résultat souhaité serait:
    0: "Le"
    1: "repas de ce soir"

    Est-ce possible?

    Merci.

  5. #5
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    ... j'ai posté pour des prunes ?
    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 !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 46
    Par défaut
    Bonjour.

    Tu proposes de faire des push:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab.push(temp.shift())
    tab.push(temps.join(' '))

    Or, je souhaiterais construire une expression régulière qui retourne directement le résultat souhaité sans passer par un traitement avec des 'push'.

    N'est-il donc pas possible, en expression régulière, de ne prendre que le premier espace rencontré dans une chaîne de caractère?

    Merci.

  7. #7
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Bon visiblement tu ne lis pas les réponses ...

    une expression régulière qui le fait direct en js me parait compliqué comme déja dit au dessus vu que js n'impléménte pas la totalité des methodes de regex lookaround et groupes non capturants...

    une autre approche avec les reg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       var texte="Le repas de ce soir"
       reg=/^(\w+)\s(.*)$/
       tab = texte.match(reg)
       tab.shift();
    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 !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 46
    Par défaut
    Merci pour ton aide.

  9. #9
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 988
    Par défaut
    Avec String.prototype.split() ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var texte = 'Le repas de ce soir';
    var tab = texte.split(/^(\S+)\s/);
    tab.shift();
    Le contenu du groupe de capture étant rajouté en tant qu'item dans le tableau de résultats.
    Comme la pattern est ancrée au début de la chaîne, un item vide est généré, il faut donc l'enlever avec Array.prototype.shift().

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

Discussions similaires

  1. expressions régulières et multiples caractères espace
    Par isabelle22 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 30/09/2009, 10h41
  2. Réponses: 4
    Dernier message: 28/06/2009, 19h09
  3. Expression régulière et espace insécable
    Par fpouget dans le forum SQL
    Réponses: 2
    Dernier message: 29/04/2009, 11h45
  4. Expression régulière : comptage espace
    Par Grumphette dans le forum Langage
    Réponses: 2
    Dernier message: 07/07/2008, 14h39
  5. expression régulière exclusion ' et espace
    Par pinocchio dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/02/2007, 10h05

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