Olá, Daniel. Tudo bem?
Agradeço pela paciência em aguardar um retorno aqui no fórum.
Parabéns pelo seu código. É muito importante colocar em prática o que aprendemos. Obrigada por compartilhá-lo conosco. :)
Para realizar algumas melhorias no seu código temos que levar em consideração algumas coisas. Atualmente no Brasil os números de celulares possuem 9 dígitos. Já os telefones fixos tem 8 dígitos. Então teremos situações semelhantes aos exemplos a seguir:
- 55 31 99876 4523 para celulares
- 55 31 3867 2312 para telefones fixos
Já no cenário internacional alguns telefones podem possuir código de área com 3 dígitos ao invés de 2. Além disso, esses números no caso dos celulares podem ou não ter o nono dígito. Assim teremos também situações parecidas com os exemplos abaixo:
- 155 61 8712 1919 para celulares
- 155 45 98726 0987 para celulares
- 155 62 8123 4621 para telefones fixos
Para abranger todas as situações citadas e corrigir o problema que está ocorrendo no seu código, basta realizarmos uma alteração sutil na Regex padrão disponibilizada pelo instrutor do curso.
Primeiramente, podemos solicitar que o usuário digite o número de telefone utilizando parênteses no DDD, assim resolvemos os casos de saber se o código de área tem 2 ou 3 dígitos.
Na Regex a alteração será de escapar os parênteses no DDD: (\([0-9]{2}\))
, para assim pegar o seu valor real e não um grupo de captura.
Um exemplo de código com essa alteração pode ser visto a seguir:
import re
telefone = "55(37)998445678"
padrao = "([0-9]{2,3})?(\([0-9]{2}\))([0-9]{4,5})([0-9]{4})"
resposta = re.search(padrao, telefone)
numero_formatado = "+{}{}{}-{}".format(
resposta.group(1),resposta.group(2),resposta.group(3),
resposta.group(4)
)
print(numero_formatado)
O resultado desse código será:
+55(37)99844-5678
O objetivo dessa aula foi dar um aperitivo do poder das expressões regulares. Porém, é importante ressaltar que essa Regex pode ser mais aprimorada para possuir uma validação ainda mais completa. Já que existem casos onde o usuário poderia informar um número em que o DDD ou telefone começasse com 0 ou até mesmo os números 0800.
Assim, caso tenha interesse em se aprofundar mais em expressões regulares deixo como recomendação um curso aqui da Alura sobre Expressões Regulares, onde você entenderá mais sobre o assunto e poderá aprender a criar expressões regulares mais eficientes.
Espero ter ajudado. Qualquer outra dúvida estou a disposição.
Agradeço novamente por compartilhar seu código conosco. Lembre-se que você pode sempre contar com o fórum da Alura para tirar suas dúvidas e compartilhar seu desenvolvimento.
Abraços. Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!