Reemplace los caracteres especiales en una cadena con _ (guión bajo)


93

Quiero eliminar los caracteres especiales de una cadena y reemplazarlos con el _carácter.

Por ejemplo:

string = "img_realtime_tr~ading3$"

La cadena resultante debería verse como "img_realtime_tr_ading3_";

Necesito reemplazar esos caracteres: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
por qué está cerrado, es una buena pregunta. Cómo reemplazar caracteres especiales, útil al crear URL compatibles con SE. Afortunadamente, todavía alguien respondió.
bicicleta

1
¿Una situación extraordinariamente limitada que generalmente no es aplicable a la audiencia mundial de Internet? Bueno, digamos que al menos 108 personas pensaban lo contrario.
Antoine Pelletier

1
Cerrado Sin embargo, bastante útil cuando se raspan datos sucios.
Standaa Reinstate Monica

Esto no debería estar cerrado
Mustkeem K

Respuestas:


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

Alternativamente, para cambiar todos los caracteres excepto números y letras, intente:

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

¡Frio! !Sin embargo, falta en la primera línea.
ProblemsOfSumit

4
La segunda línea es muy útil en varias ocasiones.
mastazi

\-y =también falta :)
Simo D'lo Mafuxwana

2
Si tiene un carácter especial antes de un espacio como hello! word, terminará con dos guiones bajos consecutivos como este hello__word, puede hacer esto:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz o incluso string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');si no sabe cuántos guiones bajos consecutivos
falkodev

1
string = string.replace(/[\W_]/g, "_");
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.