Salut !
Je cherche à écrire une expression régulière qui détecte si une année 2000 (exemple : 2021) est présente dans une phrase. Un nombre qui ne serait pas une année à 4 chiffres (exemples : 20210, 201) ne doit pas être détecté. Voici quelques exemples :
Chaîne de caractère | La regex doit renvoyer |
---|---|
2021 | true |
Nous sommes en 2021 ! | true |
J’en suis sûr à 200% ! | false |
Le nombre 20399 est premier. | false |
Le code
Ci-dessous se trouve mon code actuel.
Vous pouvez tester ce code directement dans la console :
let reg;
reg = /20[0-9]{2}[^0-9]/;
// On teste les exemples, les résultats s'affichent dans la console
reg.test("2021"); // false
reg.test("Nous sommes en 2021 !"); // true
reg.test("J’en suis sûr à 200% !"); // false
reg.test("Le nombre 20399 est premier."); // false
Le problème
Mon code arrive à détecter correctement les trois derniers exemples. Il a du mal avec la chaîne "2021" car il n’y a aucun caractère après l’année. Si j’écris /20[0-9]{2}[^0-9]?/
, alors il détecte bien le premier cas mais il retourne true pour le dernier cas.
Auriez-vous une piste pour que la regex coïncide avec les exemples du tableau ?
J’avoue que je sèche un peu…
+0
-0