De acordo com diferentes fontes, acho que o tamanho mínimo no formato E-164 depende de país para país. Por exemplo:
- Para Israel : o comprimento mínimo do número de telefone (excluindo o código do país) é de 8 dígitos. - Fonte oficial
(código do país 972)
Para a Suécia : o tamanho mínimo do número (excluindo o código do país) é de 7 dígitos. - Fonte oficial (código do país 46)
Nas Ilhas Salomão, são 5 os telefones de linha fixa. - Fonte (código do país 677)
... e assim por diante. Portanto, incluindo o código do país, o comprimento mínimo é de 9 dígitos para a Suécia e 11 para Israel e 8 para as Ilhas Salomão.
Editar (solução limpa) : na verdade, em vez de validar um número de telefone internacional com verificações diferentes, como comprimento, etc, você pode usar a biblioteca de números de código do Google . Pode validar um número de telefone no formato E164 diretamente. Isso levará em conta tudo e você nem precisará informar o país se o número estiver no formato E164 válido. É muito bom! Tomando um exemplo:
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 você conhece o país para o qual está validando os números, nem precisa do formato E164 e pode especificar o país em .parse
função, em vez de passar null
.