Telefone
Números de telefone brasileiros: celular, fixo e números de serviço.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca1 caso falha
- Ruby, biblioteca21 casos falham
- Rust, biblioteca
- .NET, biblioteca9 casos falham
- Erlang, biblioteca39 casos falham
Valida um número de telefone brasileiro, celular ou fixo por padrão.
- A função aceita um código de país (
+55,0055ou só55) e o remove primeiro, como emphone.parse. Um55sem+nem00só é removido quando restam 10 ou 11 dígitos. - O DDD precisa ser um código de área brasileiro válido (
00não é). - Qualquer caractere que não seja dígito, espaço em branco ou
()+.-/(uma letra, por exemplo) torna o valor inválido. Até a 2.4.0 esses caracteres eram descartados, então11 98765-4321xera válido. - A verificação de caracteres vale para a forma em string de qualquer entrada, não só para strings: um objeto cujo
toStringretorna"190x"é inválido, como"190x"é, enquanto um que retorna"190"é lido como o número de serviço190comaccept: ["service"]. Uma lista de caracteres não é lida como a string juntada e é inválida. Sóphone.isValidlê a forma em string;phone.isValidMobile,phone.isValidLandlineephone.isValidServiceretornamfalsepara um valor que não é string. options.accept(padrão["mobile", "landline"]) lista os tipos de número que valem como válidos:mobile,landlineeservice(os números quephone.isValidServicereconhece). Uma lista vazia rejeita tudo.options.version(1ou2, padrão1) é repassada aphone.isValidMobile: as duas versões exigem 7, 8 ou 9 como primeiro dígito do assinante, e a2também rejeita a série700(serviço por satélite).- Um celular precisa de 7, 8 ou 9 como primeiro dígito do assinante nas duas regras de numeração (Resolução Anatel nº 749/2022, art. 12). A 2.4.0 também aceitava 6 por padrão.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | sim |
options | IsValidPhoneOptions | não |
options.version | PhoneVersion | não |
options.accept | PhoneType[] | não |
| retorna | boolean |
Valida um número de telefone (celular ou fixo). Um código de país brasileiro (+55, 0055 ou um 55 isolado) é aceito e removido antes, como em parsePhone. Qualquer caractere além de dígitos, espaços e ()+.-/ (uma letra, por exemplo) torna o valor inválido; até a 2.4.0 esses caracteres eram descartados.
- Opções (
IsValidPhoneOptions):accept(PhoneType[], padrão['mobile', 'landline']) define quais tipos de número são aceitos; inclua'service'para os números queisValidServicePhonereconhece.version(PhoneVersion, padrão1) é repassado aisValidMobilePhone. - Um celular precisa começar com 7, 8 ou 9 nas duas versões (Resolução Anatel 749/2022, art. 12, I, "a"), então um 6 inicial é rejeitado; até a 2.4.0 a versão padrão o aceitava.
import { isValidPhone } from '@brazilian-utils/brazilian-utils';
isValidPhone('11900000000'); // true
isValidPhone('11712345678', { version: 2 }); // true (7, 8 e 9 são todos SMP)
isValidPhone('11700123456', { version: 2 }); // false (a série 700 é de satélite)
isValidPhone('11612345678'); // false (6 não é SMP)
isValidPhone('+55 11 98765-4321'); // true (código de país aceito)
isValidPhone('08001234567'); // false (números de serviço não são aceitos por padrão)
isValidPhone('08001234567', { accept: ['service'] }); // true
isValidPhone('11900000000', { accept: [] }); // falseFonte: Resolução Anatel nº 749/2022.
Código: brazilian-utils/javascriptTeste com JavaScript isValidPhone
Casos de teste compartilhados (64) e o resultado em cada biblioteca phone.isValid
Formatar
- JavaScript, biblioteca
- Python, biblioteca15 casos falham
- Go, biblioteca3 casos falham
- Ruby, biblioteca100 casos falham
- Rust, biblioteca2 casos falham
- .NET, biblioteca2 casos falham
- Erlang, biblioteca15 casos falham
Formata um número de telefone de acordo com os padrões brasileiros.
options.mask(padrãosn) escolhe o padrão:sn(só o número do assinante, 9 dígitos:98765-4321),nanp(DDD mais número,(11) 90000-0000, 11 dígitos para celular e 10 para fixo, qualquer outro tamanho mantém o agrupamento de 11 dígitos),e164(+5511987654321),international(+55 11 98765-4321),service(0800 123 4567,4004-1234) eauto. Umamaskdesconhecida usasn.- Se o valor incluir DDD, passe
{ mask: "auto" }ou"nanp": a máscara padrãosnpresume que não há DDD e o corta (11900000000dá11900-0000). autoescolheservicepara um número de serviço,internationalquando o valor traz código de país e, nos outros casos,nanppara mais de 9 dígitos esnpara o resto.e164einternationalprimeiro removem um código de país da entrada, comophone.parsefaz, e usamservicepara um número de serviço.e164mantém no máximo os 11 dígitos nacionais, comointernational(119888877660000dá+5511988887766). Até a 2.4.0e164mantinha todos.snenanptambém removem um+55ou0055explícito, então+5511987654321dá(11) 98765-4321emnanp. Até a 2.4.0 dava(55) 11987-6543. Um55sem+nem00fica, pois pode ser o DDD (5511988887777dá(55) 11988-8877emnanp).- Um número ainda sendo digitado depois de um código de país explícito é formatado até onde vai (
+55 11 9dá+55 11 9eminternationaleauto,+55119eme164). O valor+55sozinho retorna uma string vazia. options.obfuscate(padrãofalse, lido como verdadeiro ou falso) oculta o número do assinante com*em todas as máscaras. Mantém o prefixo que identifica uma região ou um serviço (o DDD,+55, um código como0800, a raiz300X/400X) e os 2 últimos dígitos que a máscara comporta:(11) *****-**21,0800 *** **67,4004-**34. É uma convenção da biblioteca, não uma regra oficial. Segue a contagem da conta gov.br, que mostra só os 2 últimos dígitos do celular. O DDD continua visível, embora o gov.br o esconda.- Com a máscara padrão de número do assinante, um valor com DDD é cortado antes de ser ocultado, então o par visível não são os 2 últimos dígitos da entrada (
11987654321dá*****-**43). Passe{ mask: "auto" }quando o valor tiver DDD. - Na máscara
servicecomobfuscate, um valor que é só um prefixo de serviço até agora o mantém (0800fica0800), pois o prefixo nomeia um serviço, não um assinante. Um valor curto demais para ser reconhecido (080) é totalmente oculto (***). Um valor que não é número de serviço vira um*por dígito, o que esconde os dígitos mas não quantos eram. - Com
obfuscate, um código de utilidade pública de 3 dígitos válido (190) é retornado como está nas máscarasservice,auto,e164einternational. As máscarassnenanpo leem como um número curto comum e o ocultam. - Em
e164comobfuscate, os dígitos depois do 11º dígito nacional são descartados. Isso só afeta entrada inválida. - Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número).
Decisão pendente
A referência (JS) usa por padrão a máscara do número do assinante, que corta um número com DDD. As outras bibliotecas usam por padrão (11)99402-9275. Veja a decisão em aberto em docs/findings.md (em inglês).
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
options | FormatPhoneOptions | não |
options.mask | PhoneMask | não |
options.obfuscate | boolean | não |
| retorna | string |
Formata um número de telefone de acordo com os padrões brasileiros. Se value incluir o DDD, informe { mask: 'auto' } ou 'nanp': a máscara padrão "sn" assume que não há DDD e o trunca.
- Opções (
FormatPhoneOptions):mask(PhoneMask, padrão"sn") escolhe um dos padrões abaixo. Umamaskdesconhecida recai para"sn".obfuscate(padrãofalse) esconde o número do assinante em todas as máscaras. "sn": apenas o número assinante, 9 dígitos."nanp": DDD mais número assinante, 11 dígitos para celular e 10 para fixo; outros tamanhos mantêm o agrupamento de 11 dígitos."e164"e"international"removem antes o código de país, comoparsePhone, e recaem para"service"para um número de serviço."e164"mantém no máximo os 11 dígitos nacionais, como"international"(até a 2.4.0 mantinha todos)."sn"e"nanp"também removem um+55ou0055explícito, então'+5511987654321'resulta em(11) 98765-4321em"nanp"(até a 2.4.0 resultava em(55) 11987-6543); um55isolado permanece, pois pode ser o DDD.- Um número é lido quando é string ou inteiro seguro não negativo; qualquer outro número (negativo, fracionário, não finito ou inseguro) resulta em string vazia.
- Na máscara
"service"comobfuscate, um valor que ainda é só o prefixo de serviço o mantém (0800continua0800), pois o prefixo indica um serviço, e não um assinante; um valor curto demais para ser reconhecido (080) fica todo oculto (***). "service": os Códigos Não Geográficos (0800 123 4567) e os números abreviados300X/400X(4004-1234)."auto":"service"para um número de serviço,"international"quandovaluetraz código de país, senão"nanp"para mais de 9 dígitos, ou"sn".- O
obfuscateé uma convenção desta biblioteca, não uma regra oficial: nenhuma lei, ato da Anatel ou orientação da ANPD define quais dígitos de um telefone mostrar ("não há um padrão para o mascaramento"), e o Banco Central proíbe mascarar a chave Pix, inclusive telefone, no retorno da consulta ao DICT. - O
obfuscatemantém 2 dígitos, a contagem que a conta gov.br usa para o celular cadastrado, e mantém o prefixo que indica uma região ou um serviço, e não um assinante: o DDD, o código do tipo0800e a raiz300X/400X. - Os 2 dígitos são os últimos que cabem na própria máscara, então na máscara padrão
"sn"um valor com DDD é truncado antes, igual ao que acontece semobfuscate, e o par visível é o 8º e o 9º dígito, e não os 2 últimos devalue. - Nas máscaras
"service","auto","e164"e"international"um código de utilidade pública de 3 dígitos (190) não identifica ninguém e é devolvido como está (as outras máscaras o leem como um número curto qualquer); num valor que a máscara"service"não reconhece cada dígito vira um*, o que esconde os dígitos, mas não quantos eram. Os padrões ofuscados têm um número fixo de posições, então em"e164"o que passa do 11º dígito nacional é descartado.
import { formatPhone } from '@brazilian-utils/brazilian-utils';
formatPhone('987654321'); // 98765-4321 (padrão "sn", sem DDD)
formatPhone('11900000000', { mask: 'nanp' }); // (11) 90000-0000
formatPhone('11900000000', { mask: 'auto' }); // (11) 90000-0000
formatPhone('1130000000', { mask: 'nanp' }); // (11) 3000-0000 (fixo de 10 dígitos)
formatPhone('1130000000', { mask: 'auto' }); // (11) 3000-0000 (fixo de 10 dígitos)
formatPhone('11987654321', { mask: 'e164' }); // +5511987654321
formatPhone('+5511987654321', { mask: 'international' }); // +55 11 98765-4321
formatPhone('+55 11 9', { mask: 'auto' }); // +55 11 9 (digitado após o +55, o 55 não é lido como DDD)
formatPhone('+5511987654321', { mask: 'nanp' }); // (11) 98765-4321
formatPhone('08001234567', { mask: 'service' }); // 0800 123 4567
formatPhone('40041234', { mask: 'service' }); // 4004-1234
formatPhone('+5511987654321', { mask: 'auto' }); // +55 11 98765-4321 ("auto" detecta o prefixo +55 e escolhe "international")
formatPhone('5508001234567', { mask: 'auto' }); // 0800 123 4567 ("auto" lê o número 0800, não um +55 08)
formatPhone('987654321', { obfuscate: true }); // *****-**21
formatPhone('11987654321', { mask: 'auto', obfuscate: true }); // (11) *****-**21
formatPhone('1130000000', { mask: 'auto', obfuscate: true }); // (11) ****-**00
formatPhone('+5511987654321', { mask: 'auto', obfuscate: true }); // +55 11 *****-**21
formatPhone('11987654321', { mask: 'e164', obfuscate: true }); // +5511*******21
formatPhone('08001234567', { mask: 'service', obfuscate: true }); // 0800 *** **67
formatPhone('40041234', { mask: 'service', obfuscate: true }); // 4004-**34
formatPhone('11988887766', { mask: 'service', obfuscate: true }); // *********** (não é número de serviço)
formatPhone('11987654321', { obfuscate: true }); // *****-**43 (CUIDADO: a "sn" trunca antes, então "43", e não "21")
formatPhone('11900000000'); // 11900-0000 (CUIDADO: a máscara padrão "sn" trunca um número com DDD)Fonte: ITU-T E.164, Resolução Anatel nº 749/2022, conta gov.br para quantos dígitos de um celular ficam visíveis.
Código: brazilian-utils/javascriptTeste com JavaScript formatPhone
Casos de teste compartilhados (169) e o resultado em cada biblioteca phone.format
Interpretar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca4 casos falham
- Ruby, biblioteca5 casos falham
- Rust, biblioteca4 casos falham
- .NET, biblioteca4 casos falham
- Erlang, biblioteca
Remove a formatação do telefone e mantém só os dígitos, limitados a 11.
- Um código de país explícito, escrito como
+55ou0055no início do valor, é sempre removido, quantos dígitos vierem depois, então um número ainda sendo digitado mantém o DDD:+55 11 9dá119. Até a 2.4.0 a regra de tamanho abaixo valia também para as formas explícitas, então+55 11 9dava55119. - Um
55inicial sem+nem00é removido apenas quando restam 10 ou 11 dígitos (DDD mais um assinante de 8 ou 9 dígitos). Assim, o DDD 55 não é confundido com o código de país:55987654321é mantido, e55 11 9dá55119. - Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número).
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | string |
Remove a formatação do telefone, mantém apenas os dígitos e limita o resultado a 11 dígitos.
- Um código de país explícito (
+55ou0055) é sempre removido antes, mesmo com o número ainda sendo digitado (+55 11 9resulta em119; até a 2.4.0 resultava em55119). Um55isolado só é removido quando sobram 10 ou 11 dígitos (DDD mais número assinante), então o DDD 55 não é confundido com ele. - Aceita string ou número inteiro seguro não negativo; qualquer outro número (negativo, fracionário, não finito ou inseguro) resulta em string vazia.
import { parsePhone } from '@brazilian-utils/brazilian-utils';
parsePhone('(11) 90000-0000'); // 11900000000
parsePhone('+55 (11) 98765-4321'); // 11987654321
parsePhone('5511987654321'); // 11987654321
parsePhone('+55 11 9'); // 119 (código de país explícito, número ainda curto)
parsePhone('55987654321'); // 55987654321 (DDD 55, não confundido com o código de país +55)Teste com JavaScript parsePhone
Casos de teste compartilhados (40) e o resultado em cada biblioteca phone.parse
Gerar
- JavaScript, biblioteca
- Python, biblioteca1 caso falha
- Go, biblioteca4 casos falham
- Ruby, biblioteca2 casos falham
- Rust, biblioteca3 casos falham
- .NET, biblioteca1 caso falha
- Erlang, biblioteca3 casos falham
Gera um número de telefone brasileiro aleatório, sem máscara.
Use phone.format para formatá-lo.
type:mobile(DDD + 9 dígitos começando com 9, válido nas duas versões de numeração dephone.isValidMobile),landline(DDD + 8 dígitos começando com 2 a 5) ouservice(sem DDD: um Código Não Geográfico como0800+ 7 dígitos, ou um número abreviado300X/400X). Semtype, a função escolhe um celular ou um fixo ao acaso, nunca um número de serviço.- Um fixo nunca começa com 6 depois do DDD: a faixa de 2 a 5 continua válida depois que a Resolução Anatel nº 777/2025 a estreita, em 1º de março de 2027. Até a 2.4.0 um 6 podia ser sorteado.
phone.isValidaceita o resultado de celular ou fixo, ephone.isValidServiceo de serviço.- Usa
Math.random(), então o resultado não é criptograficamente seguro: não use para fins de segurança.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
type | GeneratePhoneType | não |
| retorna | string |
Gera um telefone brasileiro aleatório. Aceita 'mobile', 'landline' ou 'service' (GeneratePhoneType); sem o tipo, gera um celular ou um fixo ao acaso, nunca um número de serviço.
- Um celular começa com 9 depois do DDD (válido nas duas versões de
isValidMobilePhone); um fixo tem 8 dígitos depois do DDD, começando com 2 a 5 (a faixa que continua válida depois que a Resolução Anatel 777/2025 a reduz em 1º de março de 2027; até a 2.4.0 podia sair um 6); um número de serviço não tem DDD.
import { generatePhone } from '@brazilian-utils/brazilian-utils';
generatePhone(); // '11912345678' ou '1131234567'
generatePhone('mobile'); // '11912345678'
generatePhone('landline'); // '1131234567'
generatePhone('service'); // '08001234567' ou '40041234'Teste com JavaScript generatePhone
Casos de teste compartilhados (7) e o resultado em cada biblioteca phone.generate
Is valid landline
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca4 casos falham
- Rust, biblioteca2 casos falham
- .NET, biblioteca4 casos falham
- Erlang, biblioteca
Valida um número fixo: DDD mais 8 dígitos começando com 2 a 6.
- A função aceita um código de país (
+55,0055ou só55) e o remove primeiro, como emphone.parse. - O DDD precisa ser um código de área brasileiro válido (
00não é). - Qualquer caractere que não seja dígito, espaço em branco ou
()+.-/(uma letra, por exemplo) torna o valor inválido. Até a 2.4.0 esses caracteres eram descartados, então11 3000-0000xera válido. - O primeiro dígito do número é de 2 a 6, a faixa do STFC e do SCM da Resolução Anatel nº 749/2022, art. 11, I, "a".
- Mudança prevista, ainda não aplicada: a partir de 1º de março de 2027 a Resolução Anatel nº 777/2025, art. 21, deixa só 2 a 5 para o STFC e move o SCM para números de 9 dígitos começando com 6. A partir dessa data um fixo começando com 6 terá de ser rejeitado.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | sim |
| retorna | boolean |
Valida um número de telefone fixo. Um código de país brasileiro (+55, 0055 ou um 55 isolado) é aceito e removido antes, como em parsePhone. Qualquer caractere além de dígitos, espaços e ()+.-/ (uma letra, por exemplo) torna o valor inválido; até a 2.4.0 esses caracteres eram descartados.
- O número é o DDD mais 8 dígitos começando com
2a6, a faixa de STFC e SCM da Resolução Anatel 749/2022, art. 11, I, "a". - Mudança agendada, ainda não aplicada: a partir de 1º de março de 2027 a Resolução Anatel 777/2025, art. 21, deixa só
2a5para o STFC, e o SCM passa para números de 9 dígitos começando com6. A partir dessa data, um fixo começando com6terá de ser rejeitado.
import { isValidLandlinePhone } from '@brazilian-utils/brazilian-utils';
isValidLandlinePhone('1130000000'); // true
isValidLandlinePhone('+55 11 3000-0000'); // true (código de país aceito)Fonte: Resolução Anatel nº 749/2022, art. 11, e Resolução Anatel nº 777/2025, art. 21.
Código: brazilian-utils/javascriptTeste com JavaScript isValidLandlinePhone
Casos de teste compartilhados (19) e o resultado em cada biblioteca phone.isValidLandline
Is valid mobile
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca1 caso falha
- Ruby, biblioteca9 casos falham
- Rust, biblioteca3 casos falham
- .NET, biblioteca3 casos falham
- Erlang, biblioteca
Valida um número de celular: DDD mais 9 dígitos.
- A função aceita um código de país (
+55,0055ou só55) e o remove primeiro, como emphone.parse. Um55sem+nem00só é removido quando restam 10 ou 11 dígitos. - O DDD precisa ser um código de área brasileiro válido (
00não é). - Qualquer caractere que não seja dígito, espaço em branco ou
()+.-/(uma letra, por exemplo) torna o valor inválido. Até a 2.4.0 esses caracteres eram descartados, então11 98765-4321xera válido. - O primeiro dígito do assinante precisa ser 7, 8 ou 9 nas duas regras de numeração (Resolução Anatel nº 749/2022, art. 12, I, "a": Serviço Móvel Pessoal). A 2.4.0 também aceitava 6 na versão 1, embora 6 não seja SMP.
options.version(1ou2, padrão1) escolhe a regra de numeração para a série700. A versão 1 a aceita. A versão 2 a rejeita, porque o art. 12, II, "a" a destina ao serviço por satélite.- A Resolução Anatel nº 777/2025 reescreve o art. 12 a partir de 1º de março de 2027 (só 8 e 9 para SMP, mais a série
700como SMP por satélite). Ela ainda não está em vigor, então a função não a aplica.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | sim |
options | IsValidMobilePhoneOptions | não |
options.version | PhoneVersion | não |
| retorna | boolean |
Valida um número de telefone celular. Um código de país brasileiro (+55, 0055 ou um 55 isolado) é aceito e removido antes, como em parsePhone. Qualquer caractere além de dígitos, espaços e ()+.-/ (uma letra, por exemplo) torna o valor inválido; até a 2.4.0 esses caracteres eram descartados.
- Opções (
IsValidMobilePhoneOptions):version(PhoneVersion, padrão1) escolhe a regra de numeração. As duas seguem a Resolução Anatel 749/2022, art. 12, I, "a" ("7", "8" e "9": Serviço Móvel Pessoal (SMP)) e aceitam só 7, 8 ou 9 como primeiro dígito;1também aceita a série700,2a rejeita por ser de satélite (art. 12, II, "a"). - Até a 2.4.0 a versão
1também aceitava 6 como primeiro dígito, que não é SMP. - Mudança agendada, ainda não aplicada: a Resolução Anatel 777/2025, art. 22, reescreve o art. 12 a partir de 1º de março de 2027. O primeiro dígito
6passa a ser SCM (não é celular), só8e9continuam SMP, a série700passa a ser "SMGS e SMP por Satélite" e qualquer outro número com7vira reserva técnica. A partir dessa data, umaversion: 2que siga essa regra terá de aceitar só8e9, além da série700como SMP por satélite.
import { isValidMobilePhone } from '@brazilian-utils/brazilian-utils';
isValidMobilePhone('11900000000'); // true
isValidMobilePhone('11712345678', { version: 1 }); // true
isValidMobilePhone('11712345678', { version: 2 }); // true (7 também é SMP)
isValidMobilePhone('11612345678'); // false (6 não é SMP, em nenhuma das versões)
isValidMobilePhone('11700123456'); // true (a versão 1 mantém a série 700)
isValidMobilePhone('11700123456', { version: 2 }); // false (a série 700 é de satélite)Fonte: Resolução Anatel nº 749/2022 e Resolução Anatel nº 777/2025, art. 22.
Código: brazilian-utils/javascriptTeste com JavaScript isValidMobilePhone
Casos de teste compartilhados (30) e o resultado em cada biblioteca phone.isValidMobile
Is valid service
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca4 casos falham
- Ruby, biblioteca10 casos falham
- Rust, biblioteca12 casos falham
- .NET, biblioteca10 casos falham
- Erlang, biblioteca
Valida um número de serviço brasileiro, discado sem DDD. A função verifica só a estrutura: o número não precisa estar atribuído a ninguém.
- Um código de país (
+55,0055ou só55) é aceito e removido primeiro, como emphone.isValidcomaccept: ["service"]:+55 0800 123 4567é válido. Até a 2.4.0 era rejeitado. Um55sem+nem00só é removido quando sobram 11 dígitos que formam um número de serviço (5508001234567é válido;55190e5540041234não são). - Qualquer caractere que não seja dígito, espaço em branco ou
()+.-/(uma letra, por exemplo) torna o valor inválido. Até a 2.4.0 esses caracteres eram descartados, entãoabc190era válido. - Códigos Não Geográficos
0300,0303,0500,0800e0900seguidos de 7 dígitos (11 no total; a forma antiga de 6 dígitos, como0800 123456, é rejeitada). A regra do0500que codifica um valor de doação nos dois últimos dígitos não é aplicada. - Os números abreviados
300X/400X(8 dígitos). Outros prefixos de operadora são rejeitados. - Os códigos de utilidade pública de 3 dígitos designados pela Anatel (por exemplo
190e192), da lista SUP atual da Anatel e do Anexo do Ato nº 43.151/2004.112é aceito: a lista SUP atual o traz (a 2.4.0 o rejeitava). 911continua rejeitado. A lista SUP o cita ao lado do112, mas a Resolução Anatel nº 749/2022, art. 13, destina aos serviços de utilidade pública só a faixa1N₂N₁. Os dois textos oficiais conflitam, então a resposta da 2.4.0 é mantida.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | sim |
| retorna | boolean |
Valida um número de serviço brasileiro, discado sem DDD. Apenas a estrutura é verificada: o número não precisa estar atribuído a ninguém. Um código de país brasileiro (+55, 0055 ou um 55 isolado) é aceito e removido antes, como em isValidPhone com accept: ['service'] (até a 2.4.0 +55 0800 123 4567 era rejeitado aqui). Qualquer caractere além de dígitos, espaços e ()+.-/ (uma letra, por exemplo) torna o valor inválido; até a 2.4.0 esses caracteres eram descartados.
- Os Códigos Não Geográficos
0300,0303,0500,0800e0900seguidos de 7 dígitos (11 no total): as séries de 10 dígitos da Resolução Anatel 749/2022, art. 18, discadas atrás do prefixo0(art. 28). - Os números abreviados
300X/400X, com 8 dígitos. Outros prefixos de operadora, como4020e4062, são rejeitados. - Os códigos de utilidade pública de 3 dígitos designados pela Anatel (ex.:
190,192), conforme a página de SUP da Anatel (modificada em 22/06/2023) e o Anexo do Ato 43.151/2004, o último ato consolidado. A página lista112/911para a Polícia Militar no celular: o112é aceito; o911é rejeitado, porque a Resolução 749/2022, art. 13, deixa toda série fora de1XXem reserva técnica. Até a 2.4.0 o112também era rejeitado.
import { isValidServicePhone } from '@brazilian-utils/brazilian-utils';
isValidServicePhone('0800 123 4567'); // true
isValidServicePhone('4004-1234'); // true
isValidServicePhone('190'); // true
isValidServicePhone('+55 0800 123 4567'); // true (código de país aceito)
isValidServicePhone('11987654321'); // false (número geográfico)Fonte: Resolução Anatel nº 749/2022, página de SUP da Anatel, Ato Anatel nº 43.151/2004, Resolução nº 86/1998.
Código: brazilian-utils/javascriptTeste com JavaScript isValidServicePhone
Casos de teste compartilhados (63) e o resultado em cada biblioteca phone.isValidService
Remove international dialing code
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca
- Ruby, biblioteca
- Rust, biblioteca
- .NET, biblioteca
- Erlang, biblioteca
Remove um +55 ou 55 do início.
JavaScript ainda não tem esta função. Adicione à biblioteca.
Casos de teste compartilhados (14) e o resultado em cada biblioteca phone.removeInternationalDialingCode
Guias
- Campo de documentoUm campo que aplica máscara e valida CPF, CNPJ, CEP ou telefone enquanto você digita, com Brazilian Utils em React, Angular, Vue e JavaScript puro.
- Bibliotecas de schemaOs validadores do Brazilian Utils dentro de um schema do Zod, do Valibot ou do ArkType, ou como um Standard Schema próprio.
Fontes oficiais
- informacoes.anatel.gov.br/legislacao/resolucoes/…/1641-resolucao-749
- itu.int/rec/T-REC-E.164
- acesso.gov.br/faq/_perguntasdafaq/…/formarrecuperarconta.html
- planalto.gov.br/ccivil_03/_ato2015-2018/…/l13709.htm
- informacoes.anatel.gov.br/legislacao/resolucoes/…/2022-resolucao-777
- gov.br/anatel/pt-br/…/servicos-de-utilidade-publica-e-de-emergencia
- informacoes.anatel.gov.br/legislacao/atos-de-numeracao/…/1648-ato-43151
- informacoes.anatel.gov.br/legislacao/resolucoes/…/336-resolucao-86
Veja também DDD
Atualizado em
