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?
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?
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!