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

 .NET Discussion :

Problème avec une regex (assez) simple [C#]


Sujet :

.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut Problème avec une regex (assez) simple
    Bonjour à toute la communauté,

    Je cherche une regex assez simple. Je souhaite pouvoir transformer cette expression régulière : R([0-9]{11}) en y ajoutant la chaîne vide. C'est à dire que mon champ peut contenir les formats suivants :

    R + 11 chiffres ou vide.

    Pour la chaîne vide j'ai vu qu'il fallait utiliser '?'

    Mais j'ai beau essayer les combinaisons suivantes, aucune ne marche :


    ^R([0-9]{11})$?
    ^(R([0-9]{11})$)?
    (^R([0-9]{11})$)?

    Je suis sur que c'est un problème bateau (surement du à une parenthèse)

    Merci pour votre précieuse aide,

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas vraiment une histoire de chaîne vide. Ce que tu veux, c'est rendre une partie de ton texte facultatif. Je ne sais pas pourquoi tu as rajouté ^et $, ça n'est pas la peine.

    Il suffit de faire ça pour avoir les chiffres facultatifs.
    R([0-9]{11})?

    La partie entre () devient facultative. Par contre je n'ai pas compris si c'était les chiffres ou tout qui était facultatif.
    Si c'est tout, il faut inclure le R dans les parenthèses :
    (R[0-9]{11})?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Gastiflex Voir le message
    Ce n'est pas vraiment une histoire de chaîne vide. Ce que tu veux, c'est rendre une partie de ton texte facultatif. Je ne sais pas pourquoi tu as rajouté ^et $, ça n'est pas la peine.

    Il suffit de faire ça pour avoir les chiffres facultatifs.
    R([0-9]{11})?

    La partie entre () devient facultative. Par contre je n'ai pas compris si c'était les chiffres ou tout qui était facultatif.
    Si c'est tout, il faut inclure le R dans les parenthèses :
    (R[0-9]{11})?

    Tout d'abord merci de ta réponse,

    Je souhaite avoir soit l'intégralité de (R+11chiffres) soit chaine vide.

    J'ai testé ce que tu me propose mais malheureusement ca n'a pas l'air de marcher. Pour info j'utilise cette expression regulière en ASP.NET dans un composant :

    <asp:RegularExpressionValidator runat="server" ID="NumDarvaRegexValidator" ControlToValidate="NumDarva"
    ValidationExpression="(R[0-9]{11})?" ErrorMessage="<%$ Resources:language, err_darva %>"
    CssClass="failureNotification" Display="None" ValidationGroup="DispoTechniqueForm" />

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Essaie avec ceci : ^R|([0-9]{11})|^$?Est-ce que ça correspond à ton besoin ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Essaie avec ceci : ^R|([0-9]{11})|^$?Est-ce que ça correspond à ton besoin ?
    Non ca ne marche pas, ta regex est invalide si on rentre une chaine vide

  6. #6
    Membre à l'essai
    Profil pro
    chef de prjet
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : chef de prjet

    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Reminouche Voir le message
    Non ca ne marche pas, ta regex est invalide si on rentre une chaine vide
    En reprennant la regex de DotNetMatt, je crois qu'il a ajouté les ^ et ? sont mal placés.
    Je viens de tester est ce que tu veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (^(R([0-9]{11}))$)|(^$)

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

Discussions similaires

  1. [C#][Regex] Problème avec une regex
    Par Reward dans le forum C#
    Réponses: 2
    Dernier message: 15/01/2009, 15h27
  2. [c# REGEX]Problème avec une expression régulière
    Par mezzo_998 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/11/2007, 13h03
  3. [RegEx] problème avec une regex
    Par lanfeust42 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2006, 08h48
  4. [RegEx] Problème avec une ReGex
    Par Death83 dans le forum Langage
    Réponses: 9
    Dernier message: 27/07/2006, 21h27
  5. Problème avec une RegEx
    Par Death83 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 26/05/2006, 14h03

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