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.