|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Développeur informatique Inscription : avril 2010 Messages : 171 ![]() |
Bonjour,
Je me permets de venir à vous afin d'optimiser une regexp. Je cherche à matcher les suite de chiffre se composant de la façon suivante: Groupe 1: - 02 + 7digits (sauf 022) - 03 + 7digits (sauf 032) - 04 + 7digits (sauf 042) - 08 + 7digits (sauf 082) - 09 + 7digits (sauf 092) Groupe 2: - 072 + 7digits - 073 + 7digits - 074 + 7digits - 076 + 7digits - 077 + 7digits - 050 + 7digits - 052 + 7digits - 053 + 7digits - 054 + 7digits - 055 + 7digits - 057 + 7digits - 058 + 7digits De plus, chaque préfixe ne peut pas être suivit d'un 0 ou d'un 1. La requête ^(02|03|04|08|09)[3-9].{6}$ me permet de matcher le groupe 1. La requête ^(050|052|053|054|055|057|058|072|073|074|076|077)[2-9].{7}$me permet de matcher le groupe 2. Est-il possible d'améliorer ses deux requêtes et surtout est-il possible de ne faire qu'une seule et même requête pour matcher l'ensemble des deux groupes? Cordialement, Julien EDIT: la requête ^((02|03|04|08|09)[3-9]|(050|052|053|054|055|057|058|072|073|074|076|077)[2-9]).{6}$semble faire l'affaire mais.. ya-til possibilité de l'améliorer? |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Bonjour,
tu peux améliorer en factorisant un peu plus (ie: le zéro est commun à tous tes nombres par exemple), en utilisant les classes de caractères prédéfinies (\d), voire les intersections de classes si c'est plus court que d'énumérer tous les éléments ([\d&&[^2]]=tous les chiffres sauf 2) Code :
^0([23489][\d&&[^2]]|(5[0234578]|7[23467])\d)\d{6}$ Code :
^0([23489][^2]|(5[^169]|7[23467]).).{6}$ Code :
^0((5[^169]|7[23467]).|[23489][^2]).{6}$ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com