在JavaScript中转义string

JavaScript是否有像PHP的addslashes (或addcslashes )函数的addcslashes函数来添加反斜杠到需要在string中转义的字符?

例如,这个:

这是一个带有“单引号”和“双引号”的演示string。

…会成为:

这是一个带有“单引号”和“双引号”的演示string。

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

 function addslashes( str ) { return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0'); } 

你也可以试试这个双引号:

 JSON.stringify(sDemoString).slice(1, -1); JSON.stringify('my string with "quotes"').slice(1, -1); 

Paolo Bergantino提供的函数的一个变体,直接在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'); } 

通过在你的库中添加上面的代码,你将能够做到:

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

编辑:

根据评论中的build议,关心JavaScript库之间的冲突的人可以添加以下代码:

 if(!String.prototype.addSlashes) { String.prototype.addSlashes = function()... } else alert("Warning: String.addSlashes has already been declared elsewhere."); 

使用encodeURI()

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

在string中转义几乎所有有问题的字符,以便在Web应用程序中使用正确的JSON编码和传输。 这不是一个完美的validation解决scheme,但它抓住了低悬的成果。