Escapar de cadenas en JavaScript

Resuelto Steve Harrison asked hace 15 años • 5 respuestas

¿JavaScript tiene una función incorporada como la función de PHP addslashes(o addcslashes) para agregar barras invertidas a los caracteres que deben escaparse en una cadena?

Por ejemplo, esto:

Esta es una cadena de demostración con 'comillas simples' y "comillas dobles".

...se convertiría:

Esta es una cadena de demostración con \'comillas simples\' y \"comillas dobles\".

Steve Harrison avatar Apr 21 '09 06:04 Steve Harrison
Aceptado

También puedes probar esto para las comillas dobles:

JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
Storm avatar Apr 03 '2014 12:04 Storm

http://locutus.io/php/strings/addslashes/

function addslashes( str ) {
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Paolo Bergantino avatar Apr 20 '2009 23:04 Paolo Bergantino

Una variación de la función proporcionada por Paolo Bergantino que funciona directamente en String:

String.prototype.addSlashes = function() 
{ 
   //no need to do (str+'') anymore because 'this' can only be a string
   return this.replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
} 

Al agregar el código anterior en su biblioteca, podrá hacer:

var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());

EDITAR:

Siguiendo las sugerencias de los comentarios, quien esté preocupado por los conflictos entre bibliotecas de JavaScript puede agregar el siguiente código:

if(!String.prototype.addSlashes)
{
   String.prototype.addSlashes = function()... 
}
else
   alert("Warning: String.addSlashes has already been declared elsewhere.");
Marco Demaio avatar Mar 31 '2010 18:03 Marco Demaio

Utilice codificarURI()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

Escapa de prácticamente todos los caracteres problemáticos en cadenas para una codificación y tránsito JSON adecuados para su uso en aplicaciones web. No es una solución de validación perfecta, pero es la más fácil.

tcmoore avatar Jul 07 '2016 17:07 tcmoore