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 :

Nombre entre 18 et 100 [RegExp]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Par défaut Nombre entre 18 et 100
    je cherche à réaliser une expression régulière d'un age entre 18 et 100, si vous avez des suggestions, je serai reconnaissante.


    MErci

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Bonjour,

    une expression régulière? vraiment?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Par défaut
    je pense que c'est ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ^(1[8-9]|[2-9][0-9]|100$)

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Ben oui, difficile de faire mieux...;
    Par contre, tes parenthèses sont mal placées et vont autoriser "20 ans, c'est jeune.";

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Donc
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(/^([2-9]\d|1[8-9]|100)$/.test(nombre);

    ou sans regexp
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(nombre>17 && nombre<101);

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Par défaut
    Merci

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    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 988
    Par défaut
    Citation Envoyé par javatwister Voir le message
    ou sans regexp
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(nombre>17 && nombre<101);
    Dans ce cas là il faut aussi vérifier que le nombre est un entier.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Ah oui tiens, c'est pas bête...

    D'un autre côté, on a le droit d'avoir 18 ans et 3 mois

  9. #9
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    oui mais du coup on gère comment les dodécacimales ?

    sinon autre version de la reg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(1((8|9)|00))|[2-9]\d$
    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 !

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Attention problème de parenthèse, @Spaf

  11. #11
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Non Non c'est bon ...
    https://jsfiddle.net/g0fjepw8/

    plutot un souci de debut / fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reg=/^(1([89]|0{2})))$|^([2-9]\d)$/;
    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 !

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Non Non c'est bon ...
    https://jsfiddle.net/g0fjepw8/

    plutot un souci de debut / fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reg=/^(1([89]|0{2})))$|^([2-9]\d)$/;
    Test 199 Ok !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    ou
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    reg=/^(1((8|9)|00)|[2-9]\d)$/;

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    oui mais du coup on gère comment les dodécacimales ?
    Oui, c'est un peu chaud avec un seul champ;

    Je n'ai pas réussi à rendre optionnelle la partie décimale dans la regexp (là, je suis obligé de répéter la partie entière)

    Code html : 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
    <!DOCTYPE html> 
    <html> 
    <head>
    <meta charset="iso-8859-1" />
    <title>...</title>
    </head>
    <body>
     
    <div>
    <label id="lab" for="age">Quel âge avez-vous (entre 18 et 100 ans)? Insérez un tiret si vous précisez les mois. </label>
     <input type="text" size="2"id="age" />
    </div>
     
    <script>
     
    document.getElementById("age").addEventListener("change",(e)=>{
            const val=e.target.value;
            if(/^((1((8|9)|00)|[2-9]\d)|((1(8|9)|[2-9]\d)-(\d|1[0-1])))$/.test(val)){
                    const mois=val==parseInt(val)?".": ` et ${val.substring(3)} mois.`;
                    document.getElementById("lab").innerHTML=`Vous avez ${parseInt(val)} ans${mois}`
            }
            else{
                    document.getElementById("lab").innerHTML="Quel âge avez-vous (entre 18 et 100 ans)? Insérez un tiret si vous précisez les mois." 
            }
    },false)
    </script>
     
    </body>
    </html>

    Ah si... j'oublie les bases
    Mais moins pratique, tu meurs

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	if(/^(1((8|9)|00)|[2-9]\d)(-(\d|1[0-1]))?$/.test(val)){
    		const mois=val==parseInt(val)?".": ` et ${val.substring(val.indexOf("-")+1)} mois.`;

    http://javatwist.imingo.net/howold.htm

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

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type="number" name="age" step="1" min="18" max="100" value="" placeholder="entre 18 et 100" />

    Ensuite, je ne vois pas trop l'intérêt d'une regex... à part "faire parler les curieux"... !
    Dernière modification par ProgElecT ; 21/11/2019 à 11h57.

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Oui c'est très insolite; petite amélioration logique quand même:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    document.getElementById("age").addEventListener("change",(e)=>{
    	let val=e.target.value;
    	if(/^(1(8|9)|[2-9]\d)(-([1-9]|1[0-2]))?$/.test(val)){
    		let mois= val==parseInt(val) ? "." : ` et ${val.substring(3)} mois.`;
    		if(val.substring(3)==12){val=parseInt(val)+1;mois=""}
     
    		document.getElementById("lab").innerHTML=`Vous avez ${parseInt(val)} ans${mois}`
    	}
    	else{
    		document.getElementById("lab").innerHTML="Quel âge avez-vous (entre 18 et 100 ans)? Insérez un tiret si vous précisez les mois." 
    	}
    },false)

  17. #17
    Invité
    Invité(e)
    Par défaut
    Oui, mais dans ce cas, autant demander l'année et le mois de naissance (ou la date complète JJ/MM/AAAA).
    Tout le monde est (normalement) capable de le donner sans réfléchir... et ça ne change pas avec le temps !
    Ce ne sont pas les scripts qui manquent : "javascript calculer âge date naissance".

    Mais bon... ce n'est pas le sujet de cette discussion, par ailleurs "résolue".

  18. #18
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    On est d'accord. C'est juste le côté incongru de la démarche qui m'a amusé.

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

Discussions similaires

  1. Xcas : tous les nombres entre 1 et 100
    Par jfk10 dans le forum Général Python
    Réponses: 9
    Dernier message: 10/08/2019, 16h09
  2. Réponses: 4
    Dernier message: 17/09/2015, 19h48
  3. [Débutant] Nombre aléatoire entre 0 et 100!
    Par iVarlix dans le forum C#
    Réponses: 1
    Dernier message: 25/06/2014, 21h13
  4. Réponses: 14
    Dernier message: 25/11/2007, 18h32
  5. Tirage aléatoire d'un nombre entre 0 et 100
    Par parano dans le forum C++
    Réponses: 7
    Dernier message: 05/03/2007, 14h17

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