Re : Expressions régulières - Patterns pour RegExp
Re JM
quelques infos suite à quelques tests :
Le motif de David Lauener qui prend en compte l'année 1900 donne des résultats erronés :
- le 01/01/1900 ramène une date non valide
- le 29/01/1900 ramène une date valide alors que 1900 n'est pas une années bissextile.
Ceci-dit, gardons bien 2 choses en tête :
- ce n'est pas le motif qui est faux mais bien Excel qui fausse les résultats
- les tests sont faits sur des dates.
Or, ce test n'est pas le meilleur moyen pour tester les résultats du motif.
En effet, à mon sens, le test le plus pertinent est à faire sur des chaînes de caractères, par exemple des données de généalogie retranscrites dans Excel où le but est d'extraire les dates de naissance et de décès de personnes. Sur ce type d'exemple, c'est
une chaîne de caractères répondant au pattern qui est recherchée et non
une date.
Je n'ai pas testé mais je pense que là, le RegExp pourra vraiment être utile et ne sera pas faussé par le mode de traitement d'Excel concernant les dates.
Nous devrions ainsi pouvoir extraire des chaînes de caractères de type "18/06/1815" qui, en tant que date n'existent pas dans Excel.
Si c'est le cas, il n'y aurait alors aucun frein à l'extension du motif permettant la recherche de chaînes de caractères s'apparentant à des dates valides de siècles antérieurs au 20ème.
Concernant le test effectué avec le calendrier 1904, il empêche le traitement des années antérieures à ...1904
.
Dernière chose : j'ai regardé le mode de traitement proposé sur le lien que tu m'as communiqué et ce que j'en ai compris me conforte dans ce que je pense : la chaîne de caractère est en 1er lieu soumise au filtre syntaxique du motif (la forme) et ce n'est qu'ensuite que la procédure traite le fond (comme dans l'exemple de traitement de la validité du SIRET).
Même si c'est l'ensemble du code qu'il faut alors prendre en compte et non plus uniquement le motif, cette solution présente plusieurs avantages :
- un motif générique, et donc plus simple à élaborer et à comprendre
- une procédure de traitement prenant en compte tous les cas de figure et allégeant l'utilisateur des possibles ré actualisations du motif (dans le motif fourni, les dates telles que le 29/01/2400 n'est pas traitée ce qui obligera ta lointaine descendance à retoucher le pattern que tu auras précieusement gardé (tu vois la galère
) !
A+