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)
^0([23489][\d&&[^2]]|(5[0234578]|7[23467])\d)\d{6}$
mais si tu n'as que des nombres et pas d'autres caractères du tout, tu peux faire plus court:
^0([23489][^2]|(5[^169]|7[23467]).).{6}$
Aprés tu peux encore optimiser sachant que la regex est analysée de gauche à droite. Si par exemple tu sais à l'avance que les nombres en 05 et 07 sont plus courants, tu peux inverser :
^0((5[^169]|7[23467]).|[23489][^2]).{6}$
Partager