Quelle est la longueur minimale d'un numéro de téléphone international valide?

147

Je dois valider l'entrée utilisateur d'un numéro de téléphone international. Selon E.164 , la longueur maximale est de 15 chiffres, mais je n'ai pas pu trouver d'informations sur le minimum. Je considère uniquement les chiffres, pas de signe plus ni de séparateurs.

SlimShaggy
la source
Bonne question. Avez-vous pu trouver une réponse à cela?
Shobhit Puri
1
le lien montre que le minimum est 7
LoranceChen

Réponses:

122

Selon différentes sources, je pense que la longueur minimale au format E-164 dépend d'un pays à l'autre. Par exemple:

  • Pour Israël : la longueur minimale du numéro de téléphone (sans l'indicatif du pays) est de 8 chiffres. - Source officielle (indicatif de pays 972)
  • Pour la Suède : la longueur minimale du numéro (sans l'indicatif du pays) est de 7 chiffres. - Source officielle (indicatif 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 de 11 pour Israël et de 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 la bibliothèque libphonenumber de Google . Il peut valider directement un numéro de téléphone au format E164. Il prendra en compte tout et vous n'avez même pas besoin de donner le 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 pouvez spécifier le pays en .parsefonction au lieu de passer null.

Shobhit Puri
la source
OMG, où était ce lien Google il y a des semaines! :-) Merci!
AMM
Yaa, je l'ai mis à jour récemment. Désolé pour le retard. J'espère que ça aide.
Shobhit Puri
@ShobhitPuri Je pense que la bibliothèque de Google dit également que "2222" est un nombre valide, alors peut-être qu'il devrait y avoir une longueur minimale à vérifier.
développeur android
@androiddeveloper J'ai essayé votre numéro ci-dessus sur libphonenumber.appspot.com. Mais il a dit que ce n'était pas un nombre possible. Avec quel code de pays avez-vous essayé ce numéro? Il y a aussi deux fonctions: une qui vérifie si c'est un nombre possible et l'autre qui vérifie si c'est valide. Je ne pense pas que nous devrions avoir besoin d'un contrôle de longueur.
Shobhit Puri
En fait, quand j'essaie cela avec le code de pays d'Israël, cela montre que c'est valide. Vous pouvez peut-être vérifier les types de nombres . getPhoneTypesemble retourner UAN. Donc, ce numéro 2222 est UAN. Mais les numéros d'accès universel peuvent également être plus longs. Techniquement, il semble être un numéro valide. Vous pouvez donc vérifier le type de numéro de téléphone ou une longueur minimale de votre part.
Shobhit Puri
15

EDIT 2015-06-27: Le minimum est en fait de 8, y compris le code du pays. Ma faute.

Message original

Le numéro de téléphone minimum que j'utilise est de 10 chiffres. Les utilisateurs internationaux devraient toujours mettre leur code de pays, et pour autant que je sache, il n'y a pas de pays avec moins de dix chiffres si vous comptez le code de pays.

Plus d'informations ici: https://en.wikipedia.org/wiki/Telephone_numbering_plan

Jamon Holmgren
la source
12
Les îles Salomon peuvent en avoir 8, y compris le code de pays ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard
Merci @TomHeard - a révisé mon message!
Jamon Holmgren le