1
resposta

Expressão regular para validar CPF

Levando em conta apenas a validação do "tamanho" do CPF e não se ele é um CPF válido ou não fazendo o cálculo do dígito verificador, a expressão regular [0-9]{9}[.]{0,3}[-]{0,1}[0-9]{2} está correta?

1 resposta

Olá Leonardo! Como vai?

A expressão regular que você compartilhou [0-9]{9}[.]{0,3}[-]{0,1}[0-9]{2} está quase correta para validar o "tamanho" do CPF. No entanto, ela permite que sejam inseridos pontos e hífens em posições diferentes do CPF, assim como valores com outros tamanhos.

Para validar apenas o "tamanho" do CPF, você pode utilizar a seguinte expressão regular: [0-9]{11}. Essa expressão irá verificar se existem exatamente 11 dígitos numéricos no CPF, sem considerar pontos ou hífens. Por exemplo:

import re

cpf = "12345678901"
if re.match(r"[0-9]{11}", cpf):
    print("CPF válido!")
else:
    print("CPF inválido!")

Dessa forma, o código irá verificar se o CPF possui exatamente 11 dígitos numéricos. Caso possua, será considerado válido. Caso contrário, será considerado inválido. Outro modo de fazer essa verificação, considerando pontos e hífens é da seguinte maneira:

import re

def validar_cpf(cpf):
    padrao = re.compile(r'^\d{3}\.\d{3}\.\d{3}-\d{2}$')
    return bool(re.match(padrao, cpf))

cpf = "123.456.789-10"
if validar_cpf(cpf):
    print("CPF válido.")
else:
    print("CPF inválido.")

Essa expressão regular ^\d{3}\.\d{3}\.\d{3}-\d{2}$ valida se o CPF está no formato correto, com pontos (.) e hífen (-) nos lugares corretos. Ela verifica se o CPF possui exatamente 11 dígitos no total, divididos em três grupos de três dígitos separados por pontos, seguidos de um grupo de dois dígitos após o hífen.

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!