Plongez dans python donne un petit tutoriel étonnant sur la création d'une expression régulière pour les numéros de téléphone: http://diveintopython3.ep.io/regular-expressions.html#phonenumbersNuméro de téléphone Expression régulière (Regex) en Python
La version finale sort pour ressembler à:
phone_re = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$', re.VERBOSE)
Cela fonctionne bien pour presque tous les exemples que je peux trouver, mais j'ai trouvé un très gros échec que je n'arrive pas à résoudre.
Si un groupe de 3 chiffres précède le numéro de téléphone, cela fonctionne correctement. IE: "500 dollars de réduction, appelez le 123-456-7891"
Si un groupe de 3 chiffres vient après le numéro de téléphone, il échoue. IE: "Appelez le 123-456-7891 pour un rabais allant jusqu'à 500"
Des idées sur un correctif qui fonctionneraient pour les deux exemples?
Je suis toujours étonné de constater à quel point les personnes respectées de la communauté Web donnent des conseils erronés (c'est-à-dire centrés sur les États-Unis). Cela peut être un bon exemple académique pour donner à regex un sens pratique pour les débutants, mais vous ne devriez pas l'utiliser dans une application réelle. Les numéros de téléphone ne fonctionnent pas de la même manière partout dans le monde. – Tomalak
Plus précisément, vous ne devez l'utiliser dans une application que si vous ne prévoyez jamais d'utiliser votre application ailleurs qu'aux États-Unis. – Amber
Et même pas là, car tout le monde ne peut pas formater un numéro de téléphone comme ils le devraient. – Joey