Je dois valider la saisie par l'utilisateur d'un numéro de téléphone international. D'après E.164 Dans le cas de l'Union européenne, la longueur maximale est de 15 chiffres, mais je n'ai pas pu trouver d'informations sur la longueur minimale. Je considère uniquement les chiffres, sans signe plus ni séparateur.
Réponses
Trop de publicités?D'après différentes sources, je pense que la longueur minimale du format E-164 dépend de chaque pays. Par ex :
-
Pour Israël : La longueur minimale d'un numéro de téléphone (sans le l'indicatif du pays) est de 8 chiffres. - Source officielle (Code pays 972)
-
Pour la Suède : La longueur minimale du numéro (sans l'indicatif du pays) est de 7 chiffres. - Source officielle (code pays 46)
-
Pour les îles Salomon son 5 pour les téléphones fixes. - Source : (code pays 677)
... et ainsi de suite. Ainsi, y compris l'indicatif du pays, la longueur minimale est de 9 chiffres pour la Suède, 11 pour Israël et 8 pour les îles Salomon.
Edit (Solution propre) : En fait, au lieu de valider un numéro de téléphone international en effectuant différents contrôles comme la longueur, etc. Le site de Google libphonenumber bibliothèque . Il peut valider directement un numéro de téléphone au format E164. Il prend tout en compte et vous n'avez même pas besoin de donner le pays si le numéro est au format E164 valide. C'est très bien ! 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 le champ .parse
au lieu de passer la fonction null
.
MODIFIER 2015-06-27 : Le minimum est en fait de 8, y compris l'indicatif du pays. C'est ma faute.
Poste original
Le numéro de téléphone minimum que j'utilise est de 10 chiffres. Les utilisateurs internationaux doivent toujours indiquer leur code pays, et pour autant que je sache, aucun pays ne compte moins de dix chiffres si l'on compte le code pays.
Plus d'informations ici : https://en.wikipedia.org/wiki/Telephone_numbering_plan