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 :

Regex de check d'un float [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut Regex de check d'un float
    Bonjour à tous,
    Les Regex sont du chinois pour moi, c'est pourquoi j'aurais besoin d'aide pour en construire un qui me permettrais de checker l'intro d'une valeur d'input.
    La valeur doit être comprise entre : 0,1 et 35; le séparateur de décimale peut être ,(virgule) ou . (point); le nombre de décimales (1 ou 2)

    En espérant que quelqu'un parle ce chinois la couramment et puisse m'aider ;-)
    d'avance merci

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonjour.
    Es-tu bien certain d'avoir besoin d'une regex ?

    A ta place, je ferai plutôt ce genre de choses (non testé)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nb=str_replace(',','.',trim($_POST['nb']));
    if(is_float($nb)){
       echo round($nb, 2).' est bien le décimal attendu';
    }
    else{
       echo round($nb, 2).' n est pas le décimal attendu';
    }

  3. #3
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Merci Dendrite,
    c'est une solution, bien que en php et je développe en JQM (Javascript) mais il est important que le nombre soit bien limité à 35
    j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var ResultTestN = (G_RegNumFloat.test(G_ValSliderGly));
            if (ResultTestN)
            {
            }
    G_RegNumFloat étant ma regex
    j'ai commencé avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^[0-9\,.]{2,3}[0-9]{1,2}$/
    mais pour la limitation, je cale

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Voilà qui est testé :
    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
    <?php
    $nb='54';//retournera 54.00
    $nb='toto';//retournera n est pas un nb decimal
    $nb='0';//retournera 0.00
    $nb='12,25';//retournera 12.25
    $nb=' 12,256487444511 ';//retournera 12.26
    $nb=str_replace(',','.',trim($nb));
    if($nb!= 0 && filter_var($nb, FILTER_SANITIZE_NUMBER_FLOAT)!=0){
      echo number_format($nb,2);
    }
    elseif($nb== 0){
      echo number_format(0,2);
    }
    else{
      echo 'n est pas un nombre décimal';
    }
    que veux-tu dire "limité à 35" ?
    De 0 à 35 inclus ?
    Pardon, j'arrête là. Je viens de lire que tu es en JQM...

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

    tout ne se règle pas forcément avec une regex.

    Code JavaScript : 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
    function check_val( val )
    {
      var val_us = val.replace(',','.');
      if( parseFloat( val_us ) != val_us )
      {
        console.log('pas un décimal');
        return false;
      } 
      else if( val_us < 0.1 || val_us > 35 )
      {
        console.log('trop petit ou trop grand');
        return false;
      } else {
          console.log('bon');
        return true;
      }
    }
    Remarque : les valeurs min (0.1) et max (35) peuvent être en paramètres de la fonction, pour plus de flexibilité.

    Par contre, tu peux mettre la regex en pattern de l'input :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="test" value="" pattern="[0-9]{0,5}[.,]?[0-9]{0,2}?" placeholder="00.00 (de 0.1 à 35)"/>

  6. #6
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    Merci Jreaux,
    En effet je pourrais évidemment passer par l'appel d'une fonction.
    En fait l'input on question suivant une variable doit pouvoir recevoir deux types d'unité de valeurs (soit des (mg/dl) ) que je checke par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var G_RegNumMin2Max3 =
            new RegExp(/^[0-9]{2,3}$/);
    soit des mmol/L que j'aimerais checker par le regex dont je parle ici en l'appelant simplement par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var ResultTestN = (G_RegNumFloat.test(G_ValSliderGly));
            if (ResultTestN)
            {
            }
    ce qui a mon sens serais bien plus léger qu'un appel de fonction, non?

    Une troisième solution serait de changer le pattern dynamiquement en effet

  7. #7
    Membre habitué Avatar de Goltar
    Homme Profil pro
    Eternel Etudiant Curieux
    Inscrit en
    Mars 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Eternel Etudiant Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2011
    Messages : 216
    Points : 137
    Points
    137
    Par défaut
    OK merci à tous en définitive je me compliquais la tâche

    j'ai résolu le problème en utilisant le regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var G_RegNumFloat = 
    new RegExp(/^[0-9]{0,2}[.,]?[0-9]{0,2}?$/);
    et en limitant a 35 en ajoutant une condition au contrôle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var ResultTestN = (G_RegNumFloat.test(G_ValSliderGly));
            if (ResultTestN && G_ValSliderGly < 35)
            {
               do something
            } else
            {
                do something else
            }

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

Discussions similaires

  1. Création d'une Regex (TextBox Float)
    Par snakzbenjy dans le forum Silverlight
    Réponses: 2
    Dernier message: 13/04/2011, 20h07
  2. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 12h32
  3. checking de connexion
    Par JEG dans le forum Développement
    Réponses: 4
    Dernier message: 09/10/2002, 13h36
  4. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07
  5. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49

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