AndersonArruda

Artigos de tecnologia ao alcance de um clique!


Validando celular brasileiro com Expressão Regular
celular brasileiro validar com expressão regular javascript python php

Validando celular brasileiro com Expressão Regular

28/06/2022 16:59

Vamos construir uma expressão regular para validar celulares brasileiros, com exemplos de como utilizar em JavaScript, Python e PHP.

Eu vou explicar como cheguei na versão final dando assim uma abrangência maior de como desenvolvi a expressão regular e cheguei no resultado final.

Versão 1:

/^((1|4|5|8|9)[0-9])|(2(1|2|4|7|8))|(3([1-5]|[7-8]))(5(1|[3-5]))(7(1|9|[3-7]))/

Contemplava somente o DDD brasileiro, foi feita por partes e sendo testada a cada pedaço desenvolvido.

Todo DDD que começa com 1, 4, 6, 8 ou 9 o segundo dígito pode ser de 0 a 9.

Todo DDD que começa com 2 o segundo dígito somente pode ser 1, 2, 4, 7 e 8.

Todo DDD que começa com 3 o segundo dígito somente pode ser de 1 à 5 ou 7 e 8.

Todo DDD que começa com 5 o segundo dígito pode ser 1 ou de 3 à 5.

Todo DDD que começa com 7 o segundo dígito pode ser 1, 9 ou de 3 a 7 [1, 3, 4, 5, 6, 7, 9]

Essas informações foram extraídas dessa fonte:

https://pt.wikipedia.org/wiki/Discagem_direta_%C3%A0_dist%C3%A2ncia


Versão 2:

Foi refinada a expressão regular utilizando sintaxes que otimizam o tamanho da expressão.

/^([14689][0-9]|2[12478]|3([1-5]|[7-8])|5([13-5])|7[193-7])/


Versão final:

/^([14689][0-9]|2[12478]|3([1-5]|[7-8])|5([13-5])|7[193-7])9[0-9]{8}$/

Essa versão contempla toda a explicação citada acima sobre os DDD e a expressão pro celular.

Até onde entendo após o nono dígito todos começam com 9. Por favor me corrijam se eu estiver errado.

Até onde entendo após o nono dígito todos começam com 9. Por favor me corrijam se eu estiver errado.

Após o 9 existem 8 números "aleatórios", se eu estiver errado também me corrijam.


Vamos aos Exemplos:


PHP

Exemplo: Verificando se o número de celular escrito é válido.

function verificaCelular(string $celular) : bool
{
    $celular = preg_replace('/[^0-9]/', '', $celular);
    return preg_match('/^([14689][0-9]|2[12478]|3([1-5]|[7-8])|5([13-5])|7[193-7])9[0-9]{8}$/', $celular);
}

if(!verificaCelular('(11)99999-9999'))
{
    echo 'O número informado não é um celular válido!';
}


JavaScript

Exemplo: Verificando se o número de celular escrito é válido.

function verificaCelular(celular)
{
    celular =  celular.replace('/[^0-9]/', '');
    return celular.match(/^([14689][0-9]|2[12478]|3([1-5]|[7-8])|5([13-5])|7[193-7])9[0-9]{8}$/);
}

if(!verificaCelular('(11)99999-9999')
{
    console.log('O número informado não é um celular válido!';
}


Python

Exemplo: Verificando se o número de celular escrito é válido.

import re

def verificaCelular(celular):
    celular = re.sub('[^0-9]', '', celular)
    return bool(re.match('^([14689][0-9]|2[12478]|3([1-5]|[7-8])|5([13-5])|7[193-7])9[0-9]{8}$', celular))
    
if not verificaCelular('(11)99999-9999'):
    print('O número informado não é um celular válido!')

Espero que tenham gostado desse artigo, originalmente foi postado no meu Linkedin https://www.linkedin.com/pulse/validando-celular-brasileiro-regex-anderson-arruda/ mas hoje eu tentei ser um pouco mais claro e objetivo aqui através do meu blog.


Qualquer dúvidas ou sugestões deixem nos comentários! Desde já agradeço e até mais!

Espaço para publicidade
0 Comentário(s)
Seja o primeiro a comentar o nosso artigo!
Todos os direitos reservados. © 2021-2031
SBBlog Powered By Powered By Sysborg | Powered By Anderson Arruda