Escapar de cadenas en JavaScript
¿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\".
También puedes probar esto para las comillas dobles:
JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
http://locutus.io/php/strings/addslashes/
function addslashes( str ) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
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.");
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.