在 JavaScript 中转义字符串

JavaScript 是否有一个类似 PHP 的 addslashes(或 addcslashes)函数的内置函数来为需要在字符串中转义的字符添加反斜杠?

例如:

这是一个演示字符串 单引号和双引号。

就会变成:

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

155622 次浏览

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

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

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.");

你也可以试试双引号:

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

使用 encodeURI ()

Https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/encodeuri

转义字符串中几乎所有有问题的字符,以便进行适当的 JSON 编码,并在 Web 应用程序中进行传输。这不是一个完美的验证解决方案,但它抓住了低垂的果实。

你也可以用这个

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