J'ai commencé à sentir que l'utilisation des expressions régulières diminue la maintenabilité du code. Il ya quelque chose de mal à propos de la concision et de la puissance des expressions régulières. Perl composés cela avec des effets secondaires comme des opérateurs par défaut.
J'ai l'habitude de documenter les expressions régulières avec au moins une phrase donnant l'intention de base et au moins un exemple de ce qui pourrait correspondre.
Parce que les expressions régulières sont construit je crois qu'il est d'une nécessité absolue de commentaire sur les composantes les plus importantes de chaque élément de l'expression. Malgré cela, même mes propres expressions régulières me en me grattant la tête comme si je lis un Klingon.
Avez-vous intentionnellement abrutir vos expressions régulières? Ne vous décomposer éventuellement plus courte et plus puissantes dans le plus simple des étapes? J'ai renoncé à la nidification des expressions régulières. Sont il de l'expression régulière à des constructions de vous éviter en raison de mainainability questions?
Ne laissez pas cet exemple de nuage de la question.
Si la suite par Michael Ash eu une sorte de bug auriez-vous des perspectives de rien faire, mais de le jeter entièrement?
^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Par demande la fin exacte peut être trouvé à l'aide de M. Ash lien ci-dessus.
Matchs 01.1.02 | 11-30-2001 | 2/29/2000
Non-Matchs 02/29/01 | 13/01/2002 | 11/00/02