70

addslashesJavaScript 是否有一个像 PHP 的(或)函数那样的内置addcslashes函数来为字符串中需要转义的字符添加反斜杠?

例如,这个:

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

...会成为:

这是一个带有 \'single-quotes\' 和 \"double-quotes\" 的演示字符串。

4

5 回答 5

96

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

function addslashes( str ) {
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
于 2009-04-20T23:53:05.077 回答
87

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

JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
于 2014-04-03T12:30:50.753 回答
40

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());

编辑:

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

if(!String.prototype.addSlashes)
{
   String.prototype.addSlashes = function()... 
}
else
   alert("Warning: String.addSlashes has already been declared elsewhere.");
于 2010-03-31T18:51:03.137 回答
3

使用 encodeURI()

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

转义字符串中几乎所有有问题的字符,以便在 Web 应用程序中使用正确的 JSON 编码和传输。这不是一个完美的验证解决方案,但它抓住了唾手可得的果实。

于 2016-07-07T17:39:56.687 回答
0

你也可以使用这个

let str = "hello single ' double \" and slash \\ yippie";

let escapeStr = escape(str);
document.write("<b>str : </b>"+str);
document.write("<br/><b>escapeStr : </b>"+escapeStr);
document.write("<br/><b>unEscapeStr : </b> "+unescape(escapeStr));

于 2020-12-30T13:23:49.300 回答