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

Collection et Stream Java Discussion :

[Regexp]Expression régulière pour vérification d'une heure et d'un nombre


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut [Regexp]Expression régulière pour vérification d'une heure et d'un nombre
    Bonjour à tous,
    Encore une fois, j'ai besoin de vous
    Je suis en train de toucher aux expressions régulières pour vérifier dans un premier temps une heure HH:MM puis un numérique avec une décimale maxi.

    Voici le code que j'ai fais pour l'heure mais ça ne marche pas dans 100% des cas... quelqu'un pourrait m'aider et me dire pourquoi? Ja'i dû oublier des conditions de recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      Pattern pattern;
      Matcher matcher;
      String reg_exp = "([0-23]):([0-59])";
      pattern = Pattern.compile(reg_exp);
      matcher = pattern.matcher("23:06");

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Je ne pense pas que tu puisse le faire uniquement avec les expressions régulières.
    "[0-59]" veut dire : un caractère (et un seul) compris entre 0 et 5 (inclus) ou égal à 9 (les valeurs possible sont donc : 0, 1, 2, 3, 4, 5, 9,).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre éclairé Avatar de luggerhouse
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 62
    Par défaut
    Par contre si tu sépare tes chiffres ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String reg_exp = "([0-2]?)([0-9]): ([0-5])([0-9])";
    Ca devrait aller

    LuggerHouse

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Je me suis fais ça et ça à l'air de marcher, qu'en pensez-vous?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String reg_exp = "^((0[0-9]|1[0-9]|2[0-3]):){1}(([0-5][0-9]){1})$";

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    J'y avais pas pensé
    par contre tu peut simplifier :
    "^((0[0-9]|1[0-9]|2[0-3]):){1}(([0-5][0-9]){1})$"
    "(0[0-9]|1[0-9]|2[0-3]):[0-5]?\d"

    PS : n'oublie pas d'échapper le \
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Citation Envoyé par le y@m's
    J'y avais pas pensé
    par contre tu peut simplifier :
    "^((0[0-9]|1[0-9]|2[0-3]):){1}(([0-5][0-9]){1})$"
    "(0[0-9]|1[0-9]|2[0-3]):[0-5]?\d"

    PS : n'oublie pas d'échapper le \

    Merci y@m's

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Citation Envoyé par le y@m's
    PS : n'oublie pas d'échapper le \
    Sur les conseils de y@m's, j'ai fais ma seconde expression régulière pour savoir si j'ai bien un numérique avec 1 et une seule décimale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String reg_exp = "([0-9]*),?\\d";
    Qu'en penses tu?

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Tu peus simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = "\\d*,?\\d)"
    Je sais pas si c'est fait exprès mais avec cette expression régulière la décimale est optionelle, si tu veus la rendre obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = "\\d+(,\\d)?"
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Citation Envoyé par le y@m's
    Tu peus simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = "\\d*,?\\d)"
    Je sais pas si c'est fait exprès mais avec cette expression régulière la décimale est optionelle, si tu veus la rendre obligatoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex = "\\d+(,\\d)?"

    Exact, j'ai oublié de préciser que la décimale est OPTIONNELLE mais il ne doit avoir qu'une et une seule décimale mais mon exp ne marche pas pour la condition "une et une seule décimale"

    String regex = "([0-9]*),?\\d";


    Pourtant, je pensais que le '?' indiquait justement 1 et un seul caractère, je me trompe?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Par défaut
    Merci beaucoup à tous, vraiment sympa de votre part

    Je viens de voir vos messages et j'ai tester de la façon suivante, actuellement je n'ai pas encore trouver de test KO. Si vous en trouvez, n'hésitez pas à me le dire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    	/**
             * Méthode qui permet de vérifier le format d'une heure HH:MM
             * @param heure Chaine de caractère à vérifier
             * @return <b>true</b si le format est OK et <b>false</b> si le format est KO
             */
    	public static boolean verifHeure(String heure)
    	{
    		return heure.matches("(0\\d|1\\d|2[0-3]):[0-5]\\d");
    	}
     
    	/**
             * Méthode qui permet de vérifier le format d'une date AAAAMMJJ
             * @param heure Chaine de caractère à vérifier
             * @return <b>true</b si le format est OK et <b>false</b> si le format est KO
             */
    	public static boolean verifDate(String date)
    	{
    		return date.matches("(\\d{4})((0[1-9]|1[0-2]){1})((0[1-9]|1\\d|2\\d|3[0-1]){1})");
    	}
     
    	/**
             * Méthode qui permet de vérifier si la variable passée en argument est un numérique avec une décimale maxi
             * @param numerique Chaine de caractère à vérifier
             * @return <b>true</b si le format est OK et <b>false</b> si le format est KO
             */
    	public static boolean verifNumerique(String numerique)
    	{
    		return numerique.matches("\\d+(,\\d)?");
    	}

  11. #11
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Citation Envoyé par alex75
    Je suis en train de toucher aux expressions régulières pour vérifier dans un premier temps une heure HH:MM puis un numérique avec une décimale maxi.
    Sinon tu peux utiliser les "java.text.Format"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Format heure = new SimpleDateFormat("HH:mm");
    boolean ok1 = true;
    try {
      Date test1 = heure.parse("23:59");
    } catch (ParseException e1) {
      ok1 = false;
    }
    Format decimal = new DecimalFormat("#,##0.0");
    boolean ok2 = true;
    try {
      Number test2 = decimal.parse("1480.67");
    } catch (ParseException e2) {
      ok2 = false;
    }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  2. [RegEx] Expression régulière pour vérification adresse email
    Par ph_anrys dans le forum Langage
    Réponses: 1
    Dernier message: 08/07/2008, 16h54
  3. Expression régulière pour remplacer une apostrophe
    Par syrius31 dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2008, 20h34
  4. expression régulière pour reconnaitre une inclusion de fichier en c++
    Par cdm1024 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 27/11/2007, 13h49
  5. Expression régulière pour récupérer une chaîne.
    Par z980x dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/06/2007, 15h01

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