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.
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.
Respuestas:
Según diferentes fuentes, creo que la longitud mínima en formato E-164 depende de un país a otro. Por ejemplo:
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 .parse
función en lugar de pasarlo null
.
getPhoneType
parece 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.
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
La longitud mínima es de 4 para Santa Helena (Formato: +290 XXXX) y Niue (Formato: +683 XXXX).