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
Version imprimable
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
Bonjour,
une expression régulière? vraiment?
je pense que c'est ca:
Code:
1
2 ^(1[8-9]|[2-9][0-9]|100$)
Ben oui, difficile de faire mieux...;
Par contre, tes parenthèses sont mal placées et vont autoriser "20 ans, c'est jeune.";
Donc
Code:console.log(/^([2-9]\d|1[8-9]|100)$/.test(nombre);
ou sans regexp
Code:console.log(nombre>17 && nombre<101);
Merci
Ah oui tiens, c'est pas bête...
D'un autre côté, on a le droit d'avoir 18 ans et 3 mois :mrgreen:
oui mais du coup on gère comment les dodécacimales ?
sinon autre version de la reg
Code:^(1((8|9)|00))|[2-9]\d$
Attention problème de parenthèse, @Spaf
Non Non c'est bon ...
https://jsfiddle.net/g0fjepw8/
plutot un souci de debut / fin
Code:reg=/^(1([89]|0{2})))$|^([2-9]\d)$/;
ou
Code:reg=/^(1((8|9)|00)|[2-9]\d)$/;
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:
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 :roll:
Mais moins pratique, tu meurs :weird:
Code:
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
Bonjour,
Code:<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"... ! :aie:
Oui c'est très insolite; petite amélioration logique quand même:
Code:
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)
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 : :recherch: "javascript calculer âge date naissance".
Mais bon... ce n'est pas le sujet de cette discussion, par ailleurs "résolue".
On est d'accord. C'est juste le côté incongru de la démarche qui m'a amusé.