Substitua os caracteres especiais em uma string por _ (sublinhado)


95

Quero remover caracteres especiais de uma string e substituí-los pelo _caractere.

Por exemplo:

string = "img_realtime_tr~ading3$"

A string resultante deve ser semelhante a "img_realtime_tr_ading3_";

Preciso substituir esses caracteres: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


49
por que isso está fechado, é uma boa pergunta. Como substituir caracteres especiais, útil ao fazer URLs amigáveis ​​para SE. Ainda bem que alguém respondeu a isso.
bicicleta de

1
Uma situação extraordinariamente limitada que geralmente não se aplica ao público mundial da Internet? Bem, vamos apenas dizer que pelo menos 108 pessoas estavam pensando o contrário.
Antoine Pelletier

1
Fechadas ? Muito útil ao coletar dados sujos.
Standaa Reintegrar Monica

Este não deve ser fechado
Mustkeem K

Respostas:


214
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_');

Como alternativa, para alterar todos os caracteres, exceto números e letras, tente:

string = string.replace(/[^a-zA-Z0-9]/g,'_');

Legal! !está faltando na primeira linha.
ProblemsOfSumit

5
A segunda linha é muito útil em várias ocasiões.
mastazi de

\-e =também ausente :)
Simo D'lo Mafuxwana

2
Se você tiver um caractere especial antes de um espaço como hello! wordvocê vai acabar com dois sublinhados consecutivos como este hello__word, você pode fazer isso:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz ou mesmo string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');se você não sabe quantos sublinhados consecutivos
falkodev

1
string = string.replace(/[\W_]/g, "_");
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.