Last active
June 20, 2025 04:39
-
-
Save cagartner/efe5e37c9c52063660cd to your computer and use it in GitHub Desktop.
Função para validar Renavam, Valida Renavam, Verifica Renavam
Codei o exemplo a cima em Go
package main
import (
"fmt"
"regexp"
"strconv"
"strings"
)
func IsValidRenavam(input string) bool {
renavam := strings.TrimSpace(input)
renavam = normalizeOlderRenavam(renavam)
if !regexp.MustCompile(`^\d{11}$`).MatchString(renavam) {
return false
}
base := reverseString(renavam[:10])
multiplicadores := []int{2, 3, 4, 5, 6, 7, 8, 9, 2, 3}
soma := 0
for i := 0; i < 10; i++ {
num, _ := strconv.Atoi(string(base[i]))
soma += num * multiplicadores[i]
}
resto := soma % 11
digitoCalculado := 11 - resto
if digitoCalculado >= 10 {
digitoCalculado = 0
}
digitoInformado, _ := strconv.Atoi(string(renavam[10]))
return digitoCalculado == digitoInformado
}
func normalizeOlderRenavam(renavam string) string {
if regexp.MustCompile(`^\d{9}$`).MatchString(renavam) {
return "00" + renavam
}
return renavam
}
func reverseString(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
func main() {
// Exemplos de uso
fmt.Println(IsValidRenavam("77338872602")) // true
fmt.Println(IsValidRenavam("12345678909")) // false
fmt.Println(IsValidRenavam("65306981534")) // true
fmt.Println(IsValidRenavam("05115024925")) // false
}
use o playgorund de Go para testar: https://go.dev/play/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Validador em PHP (>= 8.0.0), implementando interface
ValidationRule
do Laravel 11, baseado no código em https://victorjabur.com/2010/05/28/renavam_veiculos_javaA lógica é igual à do CNPJ, diferindo apenas no tamanho do número e quantidade de dígitos verificadores.