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 :

Que fait ma RegExp? Que devrait-elle être pour fonctionner?


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Que fait ma RegExp? Que devrait-elle être pour fonctionner?
    Bonjour,

    Je ne m'en sors pas avec les RegExp...

    J'aimerais que, dans un formulaire, mon utilisateur soit obligé de saisir les nom et prénom d'un auteur comme suit :
    Nom, Prénom.

    Donc des caractères, une virgule (et une seule), un espace, des caractères

    voire mieux : des caractères - avec une majuscule (une! pour la première lettre) suivie de minuscules, une virgule, un espace, des caractères - avec une majuscule (une! pour la première lettre) suivie de minuscules...

    Ma piteuse Regexp ressemble à ça et ne fonctionne pas :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var regFormatAuteur= new RegExp("(^[A-Za-z]{2,}[+\,][A-Za-z]{0,}$)");

    Pourriez-vous m'aider à parvenir à mes fins svp?
    Merci pour votre aide...

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bonjour,

    Un mot avec la première lettre en majuscule : [A-Z][a-z]+
    Deux fois le pattern ci-dessus séparés par une virgule + espace :
    ^[A-Z][a-z]+\, [A-Z][a-z]+$
    Néanmoins cette regexp est très stricte, je pense que tu devrais l'assouplir pour ne pas froisser tes utilisateurs. Par exemple, j'ai un trait d'union dans mon nom de famille, cette regexp ne convient donc pas à mon cas.
    One Web to rule them all

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, Sylvain.
    Je n'avais pas pensé aux traits d'union, merci de m'y faire songer.
    Et c'est vrai que c'est restrictif et que c'est ennuyeux pour l'utilisateur de telles contraintes.
    Je vais essayer d'assouplir ma regexp et de mettre un toUpperCase sur les premières lettres de chaque mot ainsi qu'un toLowerCase sur les suivantes.
    Bonne journée.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dernière question :

    J'ai revu un peu la RegExp, notamment avec les tirets, les blancs, etc.

    J'ai mis :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var regFormatAuteur= /[a-zA-Z-]+,[ ]?[a-zA-Z-]/;

    Je me suis étonnée de constater que mon formulaire acceptait les chiffres dans le nom...

    Alors j'ai encore essayé d'améliorer en formant la regexp comme suit :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var regFormatAuteur= 	var regFormatAuteur= /([a-zA-Z-][^0-9])+,[ ]?([a-zA-Z-][^0-9])/

    Mon formulaire l'accepte encore... !
    Qu'est ce que j'ai encore fait de travers?

    Merci...

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    J'ai essayé /[a-zA-Z\-]+,[ ]?[a-zA-Z\-]+/ sur mon regex testeur (scriptacular.com), elle n'accepte pas les chiffres. Ca a l'air de fonctionner. J'ai rajouté un anti-slash devant le trait d'union, car il doit s'agit d'un caractère spécial.

    Au passage, d'autres cas qui me viennent à l'esprit :
    -prénoms composés Jean-Claude séparés par des traits d'union et parfois par des espaces pour certains prénoms orientaux/asiatiques
    -patronymes composés: De la Vilette, D'Aulnay ; espaces, majuscules, apostrophes
    - caractères accentués : Maëva, Félicie
    One Web to rule them all

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    J'ai essayé /[a-zA-Z\-]+,[ ]?[a-zA-Z\-]+/ sur mon regex testeur (scriptacular.com), elle n'accepte pas les chiffres. Ca a l'air de fonctionner. J'ai rajouté un anti-slash devant le trait d'union, car il doit s'agit d'un caractère spécial.
    Pourquoi tu mets un "+" avant ton dernier "/"?

    Ici ce testeur accepte les chiffres, je crois* : http://quentinc.net/javascript/teste...ns-regulieres/ ?
    * à moins que je l'utilise mal?


    Citation Envoyé par SylvainPV Voir le message
    Au passage, d'autres cas qui me viennent à l'esprit :
    -prénoms composés Jean-Claude séparés par des traits d'union et parfois par des espaces pour certains prénoms orientaux/asiatiques
    -patronymes composés: De la Vilette, D'Aulnay ; espaces, majuscules, apostrophes
    - caractères accentués : Maëva, Félicie
    Purée, c'est juste !!

    Et c'est encore sans compter tous les caractères scandinaves, genre les "o barrés" etc.

    Je crois que je vais finir par juste imposer ma virgule et l'éventualité d'un espace blanc et empêcher les chiffres, finalement...

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    /[\D]+,[ ]?[\D]/;

    Mais même ainsi le testeur que je t'ai renseigné plus haut dit :

    "La chaîne coincide avec l'expression régulière

    quand je tape "atw00d, margaret9"

    Inversement, quand je mets ^ et $ à la fin, rien ne passe... Pas même "atwood, margaret", qui devrait être une chaine valide.

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    manque ^ et $
    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
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Sans le + à la fin, le patronyme n'attend qu'une seule lettre. Il est là pour indiquer au groupe précédent de se répéter N fois avec N>=1

    J'ai testé cette regex : ^\D+,[ ]?\D+$
    Et elle passe avec ton testeur et tes tests strings
    One Web to rule them all

Discussions similaires

  1. La programmation devrait-elle être connue par tous ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 79
    Dernier message: 20/03/2017, 19h56
  2. La sécurité devrait-elle être un frein à l’adoption du Cloud ?
    Par Hinault Romaric dans le forum Cloud Computing
    Réponses: 11
    Dernier message: 16/06/2012, 18h45
  3. La publicité en ligne devrait-elle être standardisée ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 3
    Dernier message: 22/03/2011, 17h59
  4. Que faites-vous quand votre code refuse obstinément de fonctionner ?
    Par Gordon Fowler dans le forum Actualités
    Réponses: 89
    Dernier message: 28/01/2010, 16h11
  5. Réponses: 2
    Dernier message: 26/08/2009, 12h36

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