Regex numero de telephone FR

Signaler
-
 V -
Bonjour j'ai créer un regex qui permettrais de reconnaitre les numéros de téléphone français qui peuvent être
-soit au format contenant 10 chiffres dont les premiers est premiers 06 ou 07
-soit un format international commençant par +33 suivie de 6 ou 7 et 8 chiffres
-les chiffres sont deux par deux séparés par un espace, - , ou rien

comme par ex :
06 10 20 30 40
0710203040
06-10-20-30-40
+33 6 10 20 30 40
+33610203040
+33-7-10-20-30-40

import re

pattern = ('((?:\+\d{2}[-.\s]?(?:\(0\)|0)*?[-.\s]?|00[-.\s]?\d{2}[-.\s]?(?:\(0\)|0)*?[-.\s]?|0)\d?[-.\s]?(?:\d{2}[-.\s]?){3,4})(?:$|\D)')

user_input = input()


#Réponse

if(re.search(pattern, user_input)):
print("ok")

else:
print("numéro non valide")


J'ai donc fais ceci mais il y a plusieurs erreurs que je n'arrive pas à corriger. Le fait qu'un des deux premiers chiffres débute par un 0 c'est ok mais comme expliqué plus tôt je voulais que le second soit 06 ou 07 (si je met 05 le programme me dit ok alors que ça devrait être invalide).
De plus lors de l'essaye avec les " - " , si j'en supprime un ça marche quand même.
Pourriez vous m'aider svp

5 réponses

Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021
783
bonjour,
ceci est également accepté:
+44123456

est-ce voulu?

ne devrais-tu pas commencer avec une regex plus simple, puis l'étendre?
non ce n'est pas voulu :( .
J'ai vraiment besoins de tous les critères que j'ai expliqué, mais pas facile je débute
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
642
Bonjour

sers toi d'un site de test de regex, qui utilise le moteur de regex de python, par exemple
https://regex101.com/r/Ax9qkq/1

Dans la colonne de droite, au milieu, on voit les différentes captures.
On constate par exemple que la capture 3 ne s'arrête pas à la fin de la ligne mais au "+" de la ligne suivante.

Construis pas à pas ta regex pour qu'elle prenne en compte tous les cas.

Merci mais je trouve pas d'ou vient mon erreur j'ai réglé le problème du 06 et 07 mais maintenant je n'arrive pas à régler ceci :

Quand je rentre +33-7-10-20-30-40 c'est bon mais si jamais j'enlève un seul des tirets et que je lance le programme le regex valide quand même le numéro de téléphone. ( +33-7-10-20-3040 par exemple). Savez vous comment remédier à cela ?

Et il y a le même problème quand je supprime un ou plusieurs espaces par exemple : +33 6 10 20 30 40 en +33 6 10 20 3040 ou +33 6 10 203040

Si vous pouviez m'aider directement plutôt que de me renvoyer sur des sites web ça serait sympa :) .

mon code :

import re

pattern = r"^(?:(?:\+|00)33[\s.-]{0,3}(?:\(0\)[\s.-]{0,3})?|0)[6-7](?:(?:[\s.-]?\d{2}){4}|\d{2}(?:[\s.-]?\d{3}){2})$"

user_input = input()


#Réponse

if(re.search(pattern, user_input)):
print("ok")

else:
print("numéro non valide")
>
Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021

c’est ce que je compte faire prochainement mais là c’est un devoir que je dois rendre demain ????
Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021
783 > Herve
https://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm

si c'est un devoir, à quoi cela sert-il de ne pas le faire tout seul? faire croire au prof que tu es plus avancé, de façon à être tout-à-fait dépassé ensuite?
>
Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021

Parce que le chapitre que je fais actuellement ne m’intéresse absolument pas.
Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021
783 > V
remet alors le devoir comme tu as pu le réaliser.
>
Messages postés
13910
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2021

D’accord, merci quand même.
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
642
Si vous pouviez m'aider directement plutôt que de me renvoyer sur des sites web


le site web en question sert à tester une regex, et voir directement le résultat (sans passer par ton code python).
Comme le sur-lignage du texte évolue au fur et à mesure qu'on modifie la regex ça permet de voir instantanément si une modification est une bonne piste ou pas....

Mais ça, tu aurais pu t'en rendre compte tout seul si tu avais pris la peine d'aller voir....

Mais puisque
Parce que le chapitre que je fais actuellement ne m’intéresse absolument pas.
ça ne m'intéresse pas non plus de t'aider, je ne donne de mon temps qu'à ceux qui le méritent.
Je suis allé voir le site, mais je n’ai pas compris son fonctionnement