Last active
August 11, 2021 02:48
-
-
Save lwtz/3ce1ad8d5e86f580691b55ea7e2dea6a to your computer and use it in GitHub Desktop.
Regex para validar CPF e CNPJ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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