Gerador de Slugs para URLs Amigáveis em JavaScript com String.prototype.normalize
Converter títulos com acentos, caracteres especiais e espaços em URLs amigáveis (slugs) é fundamental para garantir rotas limpas e otimizadas para motores de busca (SEO). O uso combinado do método nativo String.prototype.normalize() com expressões regulares resolve esse problema ao remover acentuações e caracteres inválidos sem a necessidade de bibliotecas externas.
JavaScript
/**
* Converte qualquer texto ou título em uma string no formato slug amigável para URLs.
* @param {string} texto - O texto original a ser formatado.
* @returns {string} O slug gerado em caixa baixa e separado por hífens.
*/
function gerarSlug(texto) {
return texto
.toString()
.normalize('NFD') // Decompõe caracteres acentuados em código base + diacrítico
.replace(/[\u0300-\u036f]/g, '') // Remove todos os sinais diacríticos (acentos e til)
.toLowerCase() // Converte todo o texto para letras minúsculas
.trim() // Remove espaços em branco no início e no fim
.replace(/[^a-z0-0 -]/g, '') // Remove caracteres especiais que não sejam letras, números, espaço ou hífen
.replace(/\s+/g, '-') // Substitui um ou mais espaços consecutivos por um único hífen
.replace(/-+/g, '-'); // Evita hífens duplos ou múltiplos em sequência
}
// --- Exemplo Prático de Uso ---
const tituloArtigo = ' Atenção! Guia Completo de Ações, Renda Fixa & Criptos em 2026! ';
const urlSlug = gerarSlug(tituloArtigo);
console.log('Título Original:', tituloArtigo);
console.log('Slug para URL:', urlSlug);
// Saída: atencao-guia-completo-de-acoes-renda-fixa-criptos-em-2026
Pontos-chave
- Desestruturação com Unicode
NFD: A normalização'NFD'separa os acentos de suas letras base (ex:"á"torna-se"a"+combining acute accent), permitindo a remoção limpa dos acentos via Regex. - Otimização para SEO: Substitui espaços e pontuações por hífens simples, gerando links amigáveis e de fácil leitura para usuários e rastreadores de busca.
- Prevenção de Caracteres Inválidos: A expressão regular remove símbolos e pontuações como
!,@,#,&que causam problemas de codificação quando passados diretamente em endereços web. - Zero Dependências: Funciona 100% com métodos nativos do JavaScript no Node.js e nos navegadores modernos, eliminando a necessidade de pacotes como
slugifyem cenários simples.
