Un numéro de téléphone écrit pour quelqu'un dans le même pays est ambigu partout ailleurs. Les mêmes chiffres désignent un numéro différent selon qu'un zéro initial ou un indicatif de pays est présent. E.164 supprime l'ambiguïté en fixant une seule forme écrite.
Que définit réellement la norme ?
La structure des numéros internationaux, répartie en huit catégories distinctes.
La Recommandation UIT-T E.164, de l'Union internationale des télécommunications, l'agence de l'ONU qui administre le plan de numérotation, fixe à la fois la structure des chiffres et l'analyse d'acheminement pour chaque catégorie de numéro international :
Recommendation ITU-T E.164 provides the number structure and functionality for the eight categories of numbers used for international public telecommunication:
Ces catégories couvrent bien plus que les numéros de pays. Les zones géographiques sont l'une des huit, aux côtés des services mondiaux, des autres services mondiaux, des services mondiaux par satellite, des réseaux, des groupes de pays, des ressources pour essais, et des services et applications pour l'Internet des objets et le trafic de machine à machine. La norme fournit aussi le nom des numéros eux-mêmes :
Annex A provides additional information on the structure and function of international public telecommunication numbers (hereafter referred to as "international E.164 numbers").
À quoi ressemble un numéro correctement écrit ?
Un indicatif de pays, puis le numéro national, et rien d'autre.
+31612345678 est un numéro mobile néerlandais. Le 31 est l'indicatif de pays et 612345678 est le numéro national. Ce qui est absent compte autant que ce qui est présent : pas d'espaces, pas de tirets, pas de parenthèses, pas de zéro initial de la convention de numérotation nationale, et pas de préfixe d'accès international tel que 011 ou 00.
Le + initial est une notation, pas un chiffre. Il indique à tout ce qui lit la chaîne qu'un numéro international suit. Personne ne le compose. Stockez donc les chiffres. Traitez la ponctuation comme de la présentation.
Quelle longueur un numéro peut-il avoir ?
Suffisamment pour que vous ne devriez pas vérifier.
La source lisible formule cela de manière plus restrictive que la règle habituellement citée. La FAQ de libphonenumber de Google applique le chiffre de quinze digits à la partie nationale seule, et précise que tous les pays ne le respectent pas :
We support parsing and storing numbers from a minimum length of two digits to a maximum length of 17 digits currently (excluding country calling code). The ITU standard says the national significant number should not be longer than fifteen digits, but empirically this has been proven not to be followed by all countries.
Un validateur qui rejette tout ce qui dépasse quinze chiffres rejettera donc des numéros réels.
La règle pratique est d'analyser plutôt que de mesurer. Une bibliothèque ou une recherche répond si un numéro se situe dans une plage attribuable, ce qu'une comparaison de longueur ne peut pas faire. Que vérifie la validation d'un numéro de téléphone couvre ce que chaque type de vérification établit.
Quels formats Bird accepte-t-il ?
L'indicatif de pays et le numéro national, la ponctuation étant facultative.
Vous envoyez l'indicatif de pays suivi du numéro national. La façon dont vous marquez la partie internationale est volontairement souple. Le + initial est facultatif et 00 fonctionne à sa place, donc +31612345678, 31612345678 et 0031612345678 désignent tous le même numéro.
Ce qu'il ne fera pas, c'est deviner. Un numéro écrit pour la numérotation à l'intérieur d'un pays, sans indicatif de pays, est rejeté plutôt que supposé appartenir à un pays particulier. Un formulaire qui collecte un numéro national sans collecter aussi le pays produit exactement ce rejet. Capturez les deux ensemble.
Lorsque vous achetez un numéro, la valeur à envoyer est exactement celle que l'inventaire a renvoyée, et non une copie reformatée. Le guide de recherche couvre les formats acceptés, et qu'est-ce qu'un numéro de téléphone virtuel couvre ce qu'un numéro peut faire une fois que vous le détenez.
En bref
C'est une recommandation de l'UIT, pas une convention de formatage.
UIT-T E.164 définit la structure de numérotation pour huit catégories de numéros internationaux, dont une pour les services de machine à machine.
Le signe plus est une notation, pas un chiffre.
Il indique que ce qui suit est un numéro international plutôt que quelque chose à composer, c'est pourquoi les chiffres sont la partie qui doit être correcte.
Ne validez pas par la longueur.
La bibliothèque de numéros de Google signale une recommandation de quinze chiffres issue de la norme UIT et précise qu'elle n'est pas respectée par tous les pays.
Un numéro sans indicatif de pays n'est pas un numéro E.164.
Bird rejette un numéro national seul plutôt que de deviner à quel pays il appartient. Stockez l'indicatif de pays avec le numéro.