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

Langage PHP Discussion :

Mot composé en vérifiant la longueur [RegEx]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Mot composé en vérifiant la longueur
    bonjour tout le monde,

    je pensais trouver "rapidement" une solution, mais je bloque...

    je cherche un regex pour écrire un mot de 5 à 15 lettres maxi qui pourrait contenir un tiret ou un espace...

    j'ai rapidement trouvé le code suivant, , mais qui ne convient pas puisque l'on peut mettre plusieurs tirets ou espaces...
    sinon, je pensais à quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-zA-Z]+[- ]?[a-zA-Z]$
    mais là, je ne vois pas comment limiter le nombre de caractères...

    j'espère que vous pourrez m'aider.

    @+
    ben

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Pourquoi passer par des regex, qui sont bien moins performante et plus complexes?
    savoir si un mot composé ou pas qui fait maxi 15 caractères et mini 5 caractères:
    if(strlen($variable) <= 15 && strlen($variable) >=5 )

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    La restriction en longeur est fournie par un "lookahead".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern='/^(?=[a-zA-Z- ]{5,15}$)[a-zA-Z]*[- ]?[a-zA-Z]*$/';

  4. #4
    Invité
    Invité(e)
    Par défaut
    c'est pas bête, mais je veux quand même vérifier que ce sont bien des lettres qui ont été saisie et pas n'importe quoi...

    de plus là, tu vérifies simplement la longueur saisie, mais si il y a bien un seul espace et un seul tiret.

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    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 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Bonjour,
    est ce que l'espace et le tiret doivent être comptés dans les 5 à 15 caractères ou pas ?

    En admettant que les éventuels espace ou tiret soient comptés, ceci fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^[a-z](?=.{4})(?!.{15})([a-z]* )?([a-z]*-)?(?(1)|[a-z]* )?[a-z]+$/i
    J'ai volontairement interdit de finir ou commencer par un espace ou un tiret.

    Pour interdire la succession d'un espace et d'un tiret ou d'un tiret et d'un espace il suffit de remplacer les * par +

    [EDIT] Cette horrible pattern décrit la présence éventuelle d un tiret ou d'un espace ou des deux. Ce qui ne répond pas à la question[/EDIT]

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par benoit1024 Voir le message
    c'est pas bête, mais je veux quand même vérifier que ce sont bien des lettres qui ont été saisie et pas n'importe quoi...

    de plus là, tu vérifies simplement la longueur saisie, mais si il y a bien un seul espace et un seul tiret.
    1 seul tiret ?
    1 seul espace ?
    Les deux à la fois peut-être ? Plusieurs fois ?
    Peuvent-ils être au début/à la fin de ta chaîne ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    merci à tous de votre aide.

    c'est bien 15 caractères en tout avec un seul espace ou un seul tiret (l'un ou l'autre ou aucun).
    l'espace et le tiret ne peuvent pas être au début ou à la fin.

    je vais tester vos réponses.

    merci !

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    l'espace et le tiret ne peuvent pas être au début ou à la fin.
    Comme c'est une nouvelle condition pas être mentionnée aupravant, je dois modifier ma solution postée plus haut, c'est tout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern='/^(?=[a-zA-Z- ]{5,15}$)[a-zA-Z]+[- ]?[a-zA-Z]+$/';

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je confirme que cela fonctionne parfaitement !

    Merci encore.

    Ben
    Dernière modification par Bovino ; 16/05/2013 à 08h40. Motif: Inutile de citer un message pour y répondre !!!

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

Discussions similaires

  1. [RegEx] Remplacer dans mot composé le tiret par un espace
    Par serna dans le forum Langage
    Réponses: 7
    Dernier message: 14/01/2015, 16h17
  2. Première lettre majuscule d'un mot composé
    Par juliotte dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2009, 15h10
  3. Réponses: 0
    Dernier message: 18/09/2009, 11h55
  4. \hyphenation{un-mot-composé} ? _
    Par kloss dans le forum Mise en forme
    Réponses: 1
    Dernier message: 19/06/2006, 12h44
  5. [HTML] remplissage de ma zone de texte par mot composé?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2005, 16h59

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