31
loading...
This website collects cookies to deliver better user experience
xxx.xxx.xxx-xx
(cada x
corresponde à um dígito decimal)re
que fornece operações de expressões regulares.import re
validar
a qual recebe uma string cpf
, ela retorna válido
ou inválido
.def validar(cpf):
validador = expressao.match(cpf)
if validador:
return 'válido'
return 'inválido'
re.match
, compara-se o cpf
com a expressão regular compilada expressao
, ela retorna um Match Object
caso combine, do contrário retorna None
, o valor é atribuído à variável validador
.^
sinaliza o início de uma linha ou string$
sinaliza o fim de uma linha ou string\d
corresponde aos dígitos decimais de 0 a 9.
também possui um significado especial e para retirar esse significado usa-se a \
antes do caracter, assim ele se torna o .
(ponto literal).expressao = re.compile(r'^\d\d\d\.\d\d\d\.\d\d\d-\d\d$')
re
, usando o conceito de repetição de elementos da RegEx representados por chaves {}
, aplicando-o ao conjunto de dígitos \d
que é repetido um certo número de vezes, obtem-se:expressao = re.compile(r'^\d{3}\.\d{3}\.\d{3}-\d{2}$')
.
(ponto literal), que devem ser repetidos duas vezes.expressao = re.compile(r'^(\d{3}\.){2}\d{3}-\d{2}$')
a = '111.222.333-44'
b = '1234.123.789-88'
c = '123.12.789-88'
d = 'abs.ert.yui.lk'
print(f'''
O CPF: {a} é {validar(a)}
O CPF: {b} é {validar(b)}
O CPF: {c} é {validar(c)}
O CPF: {d} é {validar(d)}
''')
a
está no formato correto.b
contém mais dígitos do que o esperado no primeiro trecho.c
contém menos dígitos do que o esperado no segundo trecho.d
apresenta caracteres não-dígitos, sendo inválido.
O CPF: 111.222.333-44 é válido
O CPF: 1234.123.789-88 é inválido
O CPF: 1234.12.789-88 é inválido
O CPF: abs.ert.yui.lk é inválido