Ontem, precisei de uma função em javascript pra tirar acentos e caracteres especiais de textos, tipo essa que o wordpress faz quando vamos criar um novo post.
O problema não era só trocar os caracteres especiais por traços, e sim trocar as letras acentuadas pelas respectivas sem acentos. Acabei achando nesse blog o que eu precisava pra fazer essa parte.
O resto foi com expressões regulares.
A função ficou assim:
function limpar(texto) { texto = texto.replace(/^\s+|\s+$/g, "");//tira espaços do inicio e do fim texto = texto.replace(/\s{2,}/g, " ");//tira espaços duplicados replacements = { "[áãàäâª]": "a", "[éèëê]": "e", "[íìï]": "i", "[óòôõö]": "o", "[ùúûü]": "u", "[ç]": "c" }; regex = {}; for (key in replacements) { regex[key] = new RegExp(key, 'g'); } for(key in replacements){ texto = texto.replace(regex[key], replacements[key]);//tira caracteres acentuados } texto = texto.replace(/[^A-Za-z0-9]/g, "-");//tira caracteres especiais texto = texto.toLowerCase();//coloca em minusculo return texto; }