https://a.storyblok.com/f/270183/1368x665/0e228316b7/what-is-e164.png

O que é o formato E.164?

Publicado em October 23, 2024

Tempo de leitura: 4 minutos

Este artigo foi atualizado em junho de 2026

A norma E.164 é uma norma internacional que define um esquema de numeração telefônica que garante que cada usuário em todo o mundo tenha um número de telefone único e permite que eles se conectem entre si para fazer chamadas e enviar mensagens. Como resultado, a norma simplifica as chamadas internacionais e reduz o risco de discar o número errado.

De acordo com a norma E.164, existem diferentes formas de especificar um número de telefone: áreas geográficas, serviços globais, redes, etc. Este artigo utilizará a representação padrão para áreas geográficas, já que esse é o formato utilizado nas APIs da Vonage.

O formato E.164

Os números de telefone E.164 contêm no máximo 15 dígitos, excluindo o + e seguem o formato:

[código do país] [código de destino nacional] [número do assinante]

onde:

  • Código do país (CC) corresponde aos códigos internacionais códigos de chamada internacionais (de 1 a 3 dígitos). Por convenção, os números de telefone internacionais são representados colocando-se o sinal de mais (+) à frente do código do país.

  • Código Nacional de Destino (NDC) identifica uma área, região ou rede específica dentro do país.

  • Número de Assinante (SN) é o número de telefone individual atribuído ao usuário. O comprimento do NDC e do SN deve ser 15 menos o comprimento do CC.

Exemplos

Estados Unidos

O número de telefone 212 123 1234 pode ser representado no formato E.164 como +12121231234, em que:

  • +1 é o código de país dos EUA.

  • 212 é o NDC.

  • 1231234 é o número do assinante.

Reino Unido

O número de telefone 020 1234 5678 pode ser representado no formato E.164 como +442012345678, onde:

  • +44 é o código de país do Reino Unido.

  • 20 é o NDC de Londres.

  • 12345678 é o número do assinante.

Espanha

O número de telefone 91 234 5678 pode ser representado no padrão E.164 como +34912345678, onde:

  • +34 é o código de país da Espanha.

  • 91 é o NDC de Madri.

  • 2345678 é o número do assinante.

Alemanha

O número de telefone 030 12345678 pode ser representado no padrão E.164 como +493012345678, em que:

  • +49 é o código de país da Alemanha.

  • 30 é o NDC de Berlim.

  • 12345678 é o número do assinante.

Por que a norma E.164 é importante?

Muitas de nossas APIs utilizam números de telefone de acordo com a norma E.164. Em particular, as APIs de rede esperam que os usuários das APIs sigam esse formato ao acessar alguns endpoints.

Por exemplo, a API do Identity Insights aceita o número de telefone do assinante no formato E.164. Ela retorna informações como, por exemplo, se o chip foi vinculado recentemente a esse número, bem como a operadora original e a atual.

Como podemos validar um número de telefone E.164?

Como desenvolvedores, é essencial garantir que os dados inseridos pelo usuário estejam corretos. Isso inclui a limpeza, a validação e a confirmação de que o número de telefone segue o formato E.164 antes de realizar qualquer chamada à API. Isso nos poupará tempo e largura de banda.

Uma solução é usar uma das bibliotecas já existentes para ajudar a validar números de telefone.

Talvez seja uma boa ideia verificar o biblioteca se estiver programando em JavaScript. O exemplo a seguir mostra a validação de um número de telefone:

const {phone} = require('phone');

phone('+1(817) 569-8900', {country: 'USA'}); 

/* 
{  isValid: true, 
    phoneNumber: '+18175698900', 
    countryIso2: 'US', 
    countryIso3: 'USA', 
    countryCode: '+1'
}
/*

Se você é um programador de Python, phonenumbers é a biblioteca ideal para você. Veja um exemplo:

import phonenumbers

my_number = phonenumbers.parse("+34911234567", "ES")
print(phonenumbers.is_valid_number(my_number)) # True

Como alternativa, você poderia criar seu próprio validador usando expressões regulares. Dependendo da linguagem de expressões regulares, algo mais ou menos assim:

^\+?[1-9]\d{1,14}$

O código Python a seguir usa essa expressão regular para validar alguns dados de entrada:

import re

def validate_e164(phone_number):
    pattern = r'^\+?[1-9]\d{1,14}$'
    return bool(re.match(pattern, phone_number))

# Test the function
test_numbers = [
    "+14155552671",      # Valid E.164 number (US)
    "+442071838750",     # Valid E.164 number (UK)
    "+493012345678",     # Valid E.164 number (Germany)
    "+34916543210",      # Valid E.164 number (Spain)
    "1234567890",        # Invalid (missing +)
    "+1234567890123456"  # Invalid (too long)
]

for number in test_numbers:
    print(f"{number}: {validate_e164(number)}")

Entre em contato!

Neste artigo, exploramos o formato de números de telefone E.164, sua estrutura e várias abordagens para validar números de telefone antes de enviar solicitações às APIs da Vonage. Como próximo passo, você pode explorar a API Vonage Identity Insights ou outras APIs de rede que utilizam números no formato E.164.

Have a question or want to share what you're building?

Stay connected and keep up with the latest developer news, tips, and events.

Compartilhar:

https://a.storyblok.com/f/270183/405x400/2b811a162d/alvaro-navarro.jpg
Alvaro NavarroEx-funcionários da Vonage

Álvaro é um ex-membro da equipe da Vonage. Ele atuou como defensor dos desenvolvedores na Vonage, com foco em APIs de rede. É apaixonado por experiência do desenvolvedor, APIs e código aberto. Fora do trabalho, é comum encontrá-lo explorando lojas de quadrinhos, participando de festivais de ficção científica e terror ou montando coisas com aqueles famosos blocinhos de plástico.