Je dois valider la saisie d'un numéro de téléphone international par l'utilisateur. Selon E.164 , la longueur maximale est de 15 chiffres, mais je n’ai trouvé aucune information sur le minimum. Je ne considère que les chiffres, pas de signe plus ni de séparateur.
Selon différentes sources, je pense que la longueur minimale dans le format E-164 dépend des pays. Par exemple:
Pour la Suède : la longueur minimale du numéro (sans l'indicatif de pays) est de 7 chiffres. - Source officielle (code de pays 46)
Pour les Îles Salomon , ses 5 pour les téléphones fixes. - Source (indicatif de pays 677)
... etc. Donc, y compris le code de pays, la longueur minimale est de 9 chiffres pour la Suède et 11 pour Israël et 8 pour les Îles Salomon.
Modifier (solution propre) : En fait, au lieu de valider un numéro de téléphone international en effectuant différentes vérifications comme la longueur, etc., vous pouvez utiliser le Google libphonenumber bibliothèque . Il peut valider directement un numéro de téléphone au format E164. Il tiendra compte de tout et vous n’avez même pas besoin de donner au pays si le numéro est au format E164 valide. C'est plutôt bon! Prenons un exemple:
String phoneNumberE164Format = "+14167129018"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, null);
boolean isValid = phoneUtil.isValidNumber(phoneNumberProto); // returns true if valid
if (isValid) {
// Actions to perform if the number is valid
} else {
// Do necessary actions if its not valid
}
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
Si vous connaissez le pays pour lequel vous validez les numéros, vous n'avez même pas besoin du format E164 et vous pouvez spécifier le pays dans .parse
fonction au lieu de passer null
.
EDIT 2015-06-27: Le minimum est en fait de 8, y compris l'indicatif de pays. Mon mauvais
Message original
Le numéro de téléphone minimal que j'utilise est de 10 chiffres. Les utilisateurs internationaux devraient toujours indiquer leur code de pays et, autant que je sache, aucun pays ne compte moins de dix chiffres si vous comptez le code de pays.
Plus d'infos ici: https://en.wikipedia.org/wiki/Telephone_numbering_plan
La longueur minimale est de 4 pour Sainte-Hélène (Format: +290 XXXX) et Nioué (Format: +683 XXXX).