Qual é o tamanho mínimo de um número de telefone internacional válido?

147

Preciso validar a entrada do usuário de um número de telefone internacional. De acordo com E.164 , o comprimento máximo é de 15 dígitos, mas não consegui encontrar nenhuma informação sobre o mínimo. Considero apenas dígitos, sem sinal de mais ou separadores.

SlimShaggy
fonte
Boa pergunta. Você conseguiu encontrar uma resposta para isso?
Shobhit Puri
1
ligação mostra a mínima é de 7
LoranceChen

Respostas:

122

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 .parsefunção, em vez de passar null.

Shobhit Puri
fonte
OMG, onde estava o link do Google semanas atrás! :-) Obrigado!
AMM
Yaa, eu atualizei recentemente. Desculpe o atraso. Espero que ajude.
Shobhit Puri
@ShobhitPuri Acho que a biblioteca do Google também diz que "2222" é um número válido, então talvez deva haver um comprimento mínimo para verificar.
desenvolvedor android
@androiddeveloper Tentei o seu número acima em libphonenumber.appspot.com. Mas disse que não é um número possível. Com qual código de país você tentou esse número? Também existem duas funções: uma que verifica se é um número possível e a outra que verifica se é válida. Acho que não precisamos de uma verificação de comprimento.
Shobhit Puri
Na verdade, quando tento isso com o código de país de Israel, ele mostra que é válido. Talvez você possa verificar os tipos de números . getPhoneTypeparece retornar UAN. Portanto, este número 2222 é UAN. Mas os Números de acesso universal também podem ser maiores. Tecnicamente, parece ser um número válido. Portanto, você pode verificar o tipo de número de telefone ou um tamanho mínimo de sua parte.
Shobhit Puri
15

EDIT 27/06/2015: O mínimo é na verdade 8, incluindo o código do país. Foi mal.

Postagem original

O número mínimo de telefone que eu uso é de 10 dígitos. Os usuários internacionais devem sempre colocar o código do país e, até onde sei, não há países com menos de dez dígitos, se você contar o código do país.

Mais informações aqui: https://en.wikipedia.org/wiki/Telephone_numbering_plan

Jamon Holmgren
fonte
12
Ilhas Salomão pode ter 8, incluindo o código do país ( en.wikipedia.org/wiki/Telephone_numbers_in_the_Solomon_Islands )
Tom Heard
Obrigado @TomHeard - revisou meu post!
Jamon Holmgren