¿Cuál es la longitud mínima de un número de teléfono internacional válido?

147

Necesito validar la entrada del usuario de un número de teléfono internacional. Según E.164 , la longitud máxima es de 15 dígitos, pero no pude encontrar ninguna información sobre el mínimo. Considero solo dígitos, sin signo más o separadores.

SlimShaggy
fuente
Buena pregunta. ¿Pudiste encontrar una respuesta a eso?
Shobhit Puri
1
el enlace muestra que el mínimo es 7
LoranceChen

Respuestas:

122

Según diferentes fuentes, creo que la longitud mínima en formato E-164 depende de un país a otro. Por ejemplo:

  • Para Israel : la longitud mínima del número de teléfono (excluyendo el código del país) es de 8 dígitos. - Fuente oficial (código de país 972)
  • Para Suecia : la longitud mínima del número (excluyendo el código del país) es de 7 dígitos. - Fuente oficial (código del país 46)

  • Para las Islas Salomón son 5 para teléfonos de línea fija. - Fuente (código de país 677)

... y así. Entonces, incluido el código de país, la longitud mínima es de 9 dígitos para Suecia y 11 para Israel y 8 para las Islas Salomón.

Editar (Solución limpia) : en realidad, en lugar de validar un número de teléfono internacional mediante diferentes comprobaciones, como la longitud, etc., puede usar la biblioteca de números de teléfono de Google . Puede validar un número de teléfono en formato E164 directamente. Tendrá en cuenta todo y ni siquiera necesita dar el país si el número está en formato E164 válido. ¡Es bastante bueno! Tomando un ejemplo:

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 conoce el país para el que está validando los números, ni siquiera necesita el formato E164 y puede especificar el país en .parsefunción en lugar de pasarlo null.

Shobhit Puri
fuente
Dios mío, ¿dónde estaba ese enlace de Google hace semanas? :-) ¡Gracias!
AMM
Yaa, lo actualicé recientemente. Perdón por el retraso. Espero eso ayude.
Shobhit Puri
@ShobhitPuri Creo que la biblioteca de Google también dice que "2222" es un número válido, por lo que tal vez debería haber una longitud mínima para verificar.
Desarrollador de Android
@androiddeveloper Probé su número anterior en libphonenumber.appspot.com. Pero dijo que no es un número posible. ¿Con qué código de país probaste ese número? También hay dos funciones: una que verifica si es un número posible y la otra que verifica si es válida. No creo que debamos necesitar una verificación de longitud.
Shobhit Puri
En realidad, cuando intento eso con el código de país de Israel, se muestra válido. Tal vez pueda verificar los tipos de números . getPhoneTypeparece regresar UAN. Entonces este número 2222 es UAN. Pero los números de acceso universal también pueden ser más largos. Técnicamente parece ser un número válido. Entonces, puede verificar el tipo de número de teléfono o una longitud mínima de su parte.
Shobhit Puri
15

EDITAR 2015-06-27: El mínimo es en realidad 8, incluido el código de país. Culpa mía.

Publicación original

El número de teléfono mínimo que uso es de 10 dígitos. Los usuarios internacionales siempre deben poner su código de país, y que yo sepa, no hay países con menos de diez dígitos si cuenta el código de país.

Más información aquí: https://en.wikipedia.org/wiki/Telephone_numbering_plan

Jamon Holmgren
fuente
12
Las Islas Salomón pueden tener 8, incluido el código de país ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard
Gracias @TomHeard - revisé mi publicación!
Jamon Holmgren