Je travaille sur une expression régulière qui ne retournera vrai que lorsqu'une chaîne de date est dans un format quelque chose comme 'ddd, dd mmm yy'.Regex valider des dates comme "Dim, 20 Juin 10"
Des correspondances valides seraient des valeurs telles que "Dim, 20 juin 10" ou "Lun, 21 juin 10" mais pas "Dimanche 20 juin 10" ou "20 juin 10".
Ceci sera utilisé avec mb_ereg en PHP.
Mes tentatives jusqu'ici m'ont seulement obtenu la moitié du chemin. Toute aide appréciée!
Merci, Dave
Juste mes 2 cents: Éviter'?: 'de regexes les rendre plus faciles à lire et à comprendre; les utilisateurs peuvent toujours les ajouter si nécessaire. Je les utilise uniquement lorsque la question a quelque chose à voir avec les groupes capturés utilisés pour la lecture ou le remplacement. Aussi '(1 | 2) [0-9]', '3 (0 | 1)' etc peut être écrit comme '[12] [0-9]' et '3 [01]' - je ne sais pas si cela fait toute différence en termes de performances. – Amarghosh
Oui, bien sûr, vous pouvez couper '?:'.Je les ai seulement intégrés pour faciliter les variables après :) Sinon, il aurait été compliqué d'utiliser quelque chose comme: '$ day = $ matches [2], $ year = $ matches [9]' ... est une différence de performance entre l'alternance et les plages dans les regex. Les plages sont toujours mieux pour un tas d'alternatives. Mais l'utilisation de l'opérateur d'alternance '|' n'est acceptable que pour 2-5 alternatives. Donc, votre approche avec '[12] [0-9]' fonctionne aussi parfaitement. Mais comme nous l'avons déjà dit: il n'y a pas de "regex parfaite". Tout le monde a son propre goût;) –
Celui-ci a fonctionné magnifiquement. Merci faileN! – Trindaz