Giter Site home page Giter Site logo

paemuri / brdoc Goto Github PK

View Code? Open in Web Editor NEW
118.0 6.0 25.0 112 KB

Brazilian docs validator for Go - CPF, CNPJ, CEP, RENAVAM, CNH and license plate!

License: The Unlicense

Go 100.00%
cnpj cpf cep license-plate renavam cnh validation go golang brazil cns

brdoc's Introduction

BR Doc

License go.dev Go Report Card

CPF, CNPJ, CEP, CNH, PIS/PASEP, RENAVAM, CNS and license plate validator for Go!

Everything in this file, but the License section, is in portuguese.

Descrição

BR Doc é um pacote para validação, tanto do formato quanto dos dígitos, de documentos brasileiros, como CPF, CNPJ, CEP, CNH, PIS/PASEP, RENAVAM, placa veicular e RG (só SP e RJ).

Aceito PRs de todas as formas. Está permitido escrever em português, também. :)

Uso

Principais funções:

  • func IsCPF(doc string) bool
  • func IsCNPJ(doc string) bool
  • func IsCEP(doc string, ufs ...FederativeUnit) bool
  • func IsCNH(doc string) bool
  • func IsPIS(doc string) bool
  • func IsRENAVAM(doc string) bool
  • func IsPlate(doc string) bool
  • func IsNationalPlate(doc string) bool
  • func IsMercosulPlate(doc string) bool
  • func IsCNS(doc string) bool
  • func IsRG(doc string, uf FederativeUnit) bool

Coisas a fazer

  • validação de CPF
  • validação de CNPJ
  • validação de CEP
  • validação de CNH (obrigado @eminetto!)
  • validação de RENAVAM (obrigado @leogregianin!)
  • validação de placa veicular
  • validação de CNS (obrigado @renatosuero!)
  • validação de RG
    • SP (obrigado @robas!)
    • RJ (obrigado @robas!)
    • demais estados

License

This project code is in the public domain. See the LICENSE file.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be in the public domain, without any additional terms or conditions.

brdoc's People

Contributors

eminetto avatar felipeweb avatar leogregianin avatar paemuri avatar pauloo27 avatar petersondmg avatar robas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

brdoc's Issues

Dúvida sobre validação do cep

Na validação de cep há um for para checar o range pelo estado aqui, como não há estados que estão no mesmo range faz sentido ter o for?
Caso ainda seja válido mandar o cep + uf faz sentido rodar um for e não validar só o caso direto?

Validador de RG

Desenvolver um validador de RG (Registro Geral) em Go implica na verificação do formato e no cálculo do dígito verificador do número de RG. O RG brasileiro normalmente apresenta-se sob o formato "XX.XXX.XXX-X", no qual "X" representa dígitos numéricos, com o último caractere funcionando como um dígito verificador.

É importante destacar que cada estado brasileiro pode estabelecer seu próprio formato de RG por meio de seus órgãos emissores, como a Polícia Civil ou a Secretaria de Segurança Pública. Isso significa que a padronização de um único algoritmo para validar RG torna-se bastante complexa, uma vez que as regras variam de estado para estado.

Este é um tema de grande interesse e, até o momento, não consegui encontrar informações abrangentes sobre as definições específicas de padrões adotados por cada estado. Portanto, qualquer contribuição relacionada às regras utilizadas na validação do documento de identidade seria uma valiosa adição para a resolução desse desafio. Juntos, podemos avançar na busca por soluções que levem em consideração a diversidade de formatos de RG utilizados em todo o país.

CNH com hífen

Parece que 0067600300-1 é uma CNH válida e, atualmente, o código não cobre este caso. Primeiro, porque a validação da CNH não espera um hífen, e, segundo, o 1 não é um dígito esperado. Como teste, removi o -1 e inseri um zero a esquerda, e funcionou.

Precisa-se entender a lógica do hífen na CNH e incluí-la no código.

CPF without special characters

Maybe a mismatch, if someone input "24843803480" like in your documentation (at README.md), it couldn't be valid, cause you are matching with a regex with special characters... and I saw that in your tests, you didn't test CPF like this.

one possible solution, you could clean all special characters before everything and match with length 11 (regex like ^\d{11}$ or just len(doc) == 11)

https://github.com/Nhanderu/brdoc/blob/8e80a668ca902bcc443abacacbacbd47c3503674/cpfcnpj.go#L45

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.