Vérifier la syntaxe d'une date.

dagobert - 27 août 2022 à 19:42
 dagobert - 25 oct. 2022 à 11:23

Bonjour,

actuellement, la regex est :

^(0?[1-9]|1[0-9]|3[01])\W(0[1-9]|1[012]|[a-z]{3,9})\W20\d\d$

Je voudrais que les deux intercalaires (\W) soient identiques; comment faire ?

4 réponses

Whismeril Messages postés 18615 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 septembre 2023 629
27 août 2022 à 20:04

Bonjour 

j'ai testé ta regex, je ne pense pas que la question que tu poses soit le premier problème à gérer, voir ce lien

https://regex101.com/r/EuK3Be/1


Quand j'étais petit, la mer Morte n'était que malade.
George Burns

0

Bonsoir,

l'objet n'est pas, actuellement, d'écrire une regex qui vérifie, parfaitement, la syntaxe d'une date, mais de vérifier que les deux intercalaires sont bien identiques.

0
Whismeril Messages postés 18615 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 septembre 2023 629
3 sept. 2022 à 00:20

OK, dans ce cas, tu mets le premier intercalaire entre parenthèses, pour former un groupe, et le second, tu appelles le résultat de la capture du groupe avec \ et le numéro du groupe (2 en l'occurrence) mais le hic est qu'après, il y a 20, donc ça fait \220 et là ça veut chercher un unicode, donc il faut mettre \2 entre parenthèses aussi.

^(0?[1-9]|1[0-9]|3[01])(\W)(0[1-9]|1[012]|[a-z]{3,9})(\2)20\d\d$

https://regex101.com/r/EuK3Be/2


Quand j'étais petit, la mer Morte n'était que malade.
George Burns

0

Merci de ces précisions. Je vais voir ce que cela donne.

0
Whismeril Messages postés 18615 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 septembre 2023 629 > dagobert
9 sept. 2022 à 07:27

Pour voir ce que ça donne, et à l'avenir tester tes regex par toi-même facilement, il suffit de cliquer sur le lien que je t'ai is au-dessus....

0

Bonjour, Whismeril, et merci d'aider !!!

Cela a l'air de fonctionner.

<?php

$nomspatt = "^[A-ZÀ-Ö][A-ZÀ-Ö' $minuscules-]*$" ;
$prixpatt = "^\d*\.?\d*$" ;

$patterns = array(
"nom" => $nomspatt,
"prénom" => $nomspatt,
"mail" => "^[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+$",
"téléphone" => "^\+\d{10,12}$",
"bacano" => "^\d{16}$",
"cryptogramme" => "^\d{3}$",
"prix" => $prixpatt,
"budget" => $prixpatt,
"expidate" => "^\d{2}/\d{2}$",
"date" => "^(0?[1-9]|[12][0-9]|3[01])(\W)(0[1-9]|1[012]|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)(\\2)20\d\d$",
) ;

?>

Bonne journée !

0
Rejoignez-nous