Salut,
Je suis pas un spécialiste de regex mais ceci devrait fonctionner :
$format_tel = "#^(\d{2}[ \.]){4}\d{2}$#";
Pas mal pour un non spécialiste auto-déclaré!
Je rendrais juste la classe de caractères optionnelle pour valider les numéros "pleins".
^(\d{2}[ .]
?){4}\d{2}$
En passant, il n'est pas indispensable d'échapper le point dans une classe de caractères. Les seuls caractères spéciaux et méta caractères qui doivent être échappés sont: les
^ \ ] -. Et encore, si les deux derniers sont situés juste derrière les crochets de la classe, ça passe:
[[abcd] et
[abcd[] sont tous deux valides et équivalent à
[ab\[cd]
Sinon, l'alternative classique est de d'abord supprimer tous les caractères indésirables avec un str_replace() et ensuite tester avec un simple is_numeric(). Les avantages de cette deuxième méthode sont qu'elle sera sans doute plus rapide à l'exécution et ensuite, si tu mets le tél. en bdd, tous tes n° seront normalisés.
ripat