Skip to content

Instantly share code, notes, and snippets.

@lwtz
Last active August 11, 2021 02:48
Show Gist options
  • Save lwtz/3ce1ad8d5e86f580691b55ea7e2dea6a to your computer and use it in GitHub Desktop.
Save lwtz/3ce1ad8d5e86f580691b55ea7e2dea6a to your computer and use it in GitHub Desktop.
Regex para validar CPF e CNPJ
CPF - JS:
/^[0-9]{3}.?[0-9]{3}.?[0-9]{3}-?[0-9]{2}/
Para CPF:
/^\d{3}\.\d{3}\.\d{3}\-\d{2}$/
Para CNPJ:
/^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$/
Para ambos ao mesmo tempo:
/(^\d{3}\.\d{3}\.\d{3}\-\d{2}$)|(^\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2}$)/
Esta solução valida estes formatos: 00000000000, 00000000000000, 000.000.000-00, 00.000.000/0000-00 e até 000000000-00 ou 00000000/0000-00, por exemplo. Os pontos e traços são opcionais em cada uma das posições.
O que não é aceito, por exemplo: 000-000-000-00 (mas pode ser alterado conforme nota abaixo)
([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})
Explicação:
[0-9]{2} Faixa de caracteres: 0 a 9, quantidade: 2 caracteres;
[0-9]{3} Faixa de caracteres: 0 a 9, quantidade: 3 caracteres;
[0-9]{4} Faixa de caracteres: 0 a 9, quantidade: 4 caracteres;
[\.]?Um ponto, opcional. Foi usado \ no ponto, pois ele sozinho é caractere especial;
[-]? Um traço, opcional (se acrescentar outros caracteres, comece pelo - sempre);
[\/]? Uma barra, opcional. Tambem "escapada" com \ pra agradar o PCRE;
(grupo1)|(grupo2) Se um dos grupos validar, a expressão é válida.
Caso queira aceitar outros separadores, basta acrescentar entre os [ ].
Exemplo: [-\.\/]? vai aceitar tanto - quanto . e / naquela posição (? = ou nada).
Para adaptar para outros "dialetos" de regexp, algumas variações possíveis seriam tirar o escape da barra (\/ => /) e opcionalmente colocar um ^ no começo e um $ no fim da linha.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment