ragfica.pages.dev

Como validar CPF com expressão regular no Linux?

Validar CPFs manualmente é uma tarefa repetitiva e propensa a erros. Utilizar expressões regulares no Linux permite automatizar essa verificação de forma rápida e precisa, garantindo que apenas formatos válidos sejam aceitos.

Pré-requisitos

Expressão regular para validação do formato do CPF

A expressão regular a seguir verifica se o CPF está no formato correto, com ou sem máscara:

^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$

Criando um script para validação

Crie um arquivo chamado validar_cpf.sh com o seguinte conteúdo:

#!/bin/bash

# Função para validar o formato do CPF
validar_formato() {
    local cpf="$1"
    if [[ "$cpf" =~ ^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$ ]]; then
        echo "Formato válido"
    else
        echo "Formato inválido"
    fi
}

# Exemplo de uso
echo "Digite o CPF:"
read cpf
validar_formato "$cpf"

Script com validação completa (formato + algoritmo)

Para uma validação mais robusta, incluindo o algoritmo de verificação dos dígitos, use:

#!/bin/bash

validar_cpf() {
    local cpf="$1"
    # Remove caracteres não numéricos
    cpf=$(echo "$cpf" | tr -d '.' | tr -d '-')
    
    # Verifica se tem 11 dígitos
    if [[ ${#cpf} -ne 11 ]]; then
        echo "CPF inválido"
        return 1
    fi
    
    # Verifica se todos os dígitos são iguais
    if [[ "$cpf" =~ ^(.)\1{10}$ ]]; then
        echo "CPF inválido"
        return 1
    fi
    
    # Algoritmo de validação
    local soma=0
    for i in {10..2}; do
        soma=$((soma + ${cpf:10-$i:1} * i))
    done
    local dv1=$((soma * 10 % 11))
    dv1=$((dv1 == 10 ? 0 : dv1))
    
    soma=0
    for i in {11..2}; do
        soma=$((soma + ${cpf:11-$i:1} * i))
    done
    local dv2=$(((soma + dv1 * 2) * 10 % 11))
    dv2=$((dv2 == 10 ? 0 : dv2))
    
    if [[ ${cpf:9:1} -eq $dv1 && ${cpf:10:1} -eq $dv2 ]]; then
        echo "CPF válido"
    else
        echo "CPF inválido"
    fi
}

# Exemplo de uso
echo "Digite o CPF:"
read cpf
validar_cpf "$cpf"

Exemplo Prático

CPF de Entrada Formato Válido? CPF Válido?
123.456.789-09 Sim Não
529.982.247-25 Sim Sim
12345678909 Sim Não
111.111.111-11 Sim Não

Conclusão

Com este método, você automatiza a validação de CPFs em segundos, evitando erros manuais e garantindo que apenas documentos no formato e algoritmo corretos sejam aceitos no seu sistema.