Regex pour valider numéro téléphone

J’essaie de créer une expression régulière pour valider les numéros de téléphone. L’idéal serait qu’elle gère les formats internationaux, mais elle doit gérer les formats français.

Cela doit être comme ceci :

0X XX XX XX XX

ou:

+33 X XX XX XX XX

Voici ce que j’ai réalisé mais ce n’est pas correct …

/^(\+33\s[1-9]{8})|(0[1-9]\s{8})$/

Vous pouvez utiliser :

/^(?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}$/g

Explication:

  • (?:(?:\+|00)33|0) # Code de composition
  • \s*[1-9] # Premier chiffre (de 1 à 9)
  • (?:[\s.-]*\d{2}){4} # Fin du numéro de téléphone

Il autorise les espaces ou .(point) ou -(tiret) comme séparateur, ou pas de séparateur du tout

Testez ce regex en ligne.

Un exemple complexe (celui que j’utilise) :

^(?:(?:\+|00)33[\s.-]{0,3}(?:\(0\)[\s.-]{0,3})?|0)[1-9](?:(?:[\s.-]?\d{2}){4}|\d{2}(?:[\s.-]?\d{3}){2})$

Par exemple, il correspond à chacune de ces lignes :

+33-1.23.45.67.89
+33 - 123 456 789
+33(0) 123 456 789
+33 (0)123 45 67 89
+33 (0)1 2345-6789
+33(0) - 123456789
0123456789
01 23 45 67 89
01.23.45.67.89
0123 45.67.89
0033 123-456-789

Vous pouvez la tester ici: