Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Validando telefones com expressões regulares

Na aula, fizemos a class TelefoneBr e criamos uma mascara para mostrar ao usuário o numero formatado considerando cód país (com 2 ou 3 dígitos), ddd (2 dígitos) e telefone ( 8 ou 9 dígitos), porém ao fazer um teste com cód de país com 2 dígitos (Brasil por exemplo: 55) e 9 dígitos para celular, o resultado acaba puxando 3 dígitos para cód país e deixa o celular com 8 dígitos.

import re

class TelefonesBr:
    def __init__(self, telefone):
        if self.valida_telefone(telefone):
            self.numero = telefone
        else:
            raise ValueError('Número incorreto')

    def __str__(self):
        return self.format_numero()

    def valida_telefone(self, telefone):
        padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
        resposta = re.findall(padrao, telefone)
        if resposta:
            return True
        else:
            return False

    def format_numero(self):
        padrao = '([0-9]{2,3})?([0-9]{2})([0-9]{4,5})([0-9]{4})'
        resposta = re.search(padrao, self.numero)
        numero_formatado = '+{}({}){}-{}'.format(
            resposta.group(1),
            resposta.group(2),
            resposta.group(3),
            resposta.group(4)
        )
        return (numero_formatado)
import re
from TelefonesBr import TelefonesBr

telefone = '5521123456789'
telefone_objeto = TelefonesBr(telefone)
print(telefone_objeto) -> +552(11)2345-6789

Como posso corrigir este erro?

1 resposta
solução!

Olá Diego, tudo bem?

Dá uma olhada nessa postagem.

Bons estudos!