Qual è la lunghezza minima di un numero di telefono internazionale valido?


147

Devo convalidare l'input dell'utente di un numero di telefono internazionale. Secondo E.164 , la lunghezza massima è di 15 cifre, ma non sono stato in grado di trovare alcuna informazione sul minimo. Considero solo cifre, nessun segno più o separatori.


Buona domanda. Sei riuscito a trovare una risposta a questo?
Shobhit Puri,

1
il link mostra il minimo è 7
LoranceChen

Risposte:


122

Secondo fonti diverse, penso che la lunghezza minima nel formato E-164 dipenda da paese a paese. Ad esempio:

  • Per Israele : la lunghezza minima del numero di telefono (escluso il prefisso internazionale) è di 8 cifre. - Fonte ufficiale ( prefisso nazionale 972)
  • Per la Svezia : la lunghezza minima del numero (escluso il prefisso internazionale) è di 7 cifre. - Fonte ufficiale (codice paese 46)

  • Per le Isole Salomone sono 5 per i telefoni di rete fissa. - Fonte (prefisso 677)

... e così via. Quindi, incluso il prefisso nazionale, la lunghezza minima è di 9 cifre per la Svezia e 11 per Israele e 8 per le Isole Salomone.

Modifica (soluzione pulita) : in realtà, invece di convalidare un numero di telefono internazionale con diversi controlli come lunghezza ecc., Puoi utilizzare la libreria libphonenumber di Google . Può convalidare direttamente un numero di telefono nel formato E164. Terrà conto di tutto e non è nemmeno necessario indicare il Paese se il numero è in formato E164 valido. È abbastanza buono! Prendendo un esempio:

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());
}

Se conosci il paese per il quale stai convalidando i numeri, non hai nemmeno bisogno del formato E164 e puoi specificare il paese in .parsefunzione invece di passare null.


OMG, dov'era quel link di Google settimane fa! :-) Grazie!
AMM,

Yaa, l'ho aggiornato di recente. Scusa per il ritardo. Spero che sia d'aiuto.
Shobhit Puri,

@ShobhitPuri Penso che anche la biblioteca di Google affermi che "2222" è un numero valido, quindi forse dovrebbe esserci una lunghezza minima da controllare.
sviluppatore Android

@androiddeveloper Ho provato il tuo numero sopra su libphonenumber.appspot.com. Ma ha detto che non è un numero possibile. Con quale prefisso nazionale hai provato quel numero? Inoltre ci sono due funzioni: una che controlla se è un numero possibile e l'altra che controlla se è valido. Non credo che dovremmo aver bisogno di un controllo di lunghezza.
Shobhit Puri,

In realtà quando lo provo con il prefisso internazionale di Israele, risulta valido. Forse puoi controllare i tipi di numero . getPhoneTypesembra restituire UAN. Quindi questo numero 2222 è UAN. Ma i numeri di accesso universale possono anche essere più lunghi. Tecnicamente sembra essere un numero valido. Quindi puoi controllare il tipo di numero di telefono o una lunghezza minima da parte tua.
Shobhit Puri,

15

EDIT 2015-06-27: Il minimo è in realtà 8, incluso il prefisso internazionale. Colpa mia.

Posta originale

Il numero di telefono minimo che uso è di 10 cifre. Gli utenti internazionali dovrebbero sempre inserire il proprio prefisso nazionale e, per quanto ne so, non ci sono paesi con meno di dieci cifre se si contano i prefissi nazionali.

Maggiori informazioni qui: https://en.wikipedia.org/wiki/Telephone_numbering_plan


12
Le Isole Salomone possono avere 8 incluso il prefisso del paese ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard

Grazie @TomHeard - ho rivisto il mio post!
Jamon Holmgren,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.