JavaScript 是否有像 PHP 的addslashes
(或addcslashes
)函数那样的内置函数来为需要在字符串中转义的字符添加反斜杠?
例如,这个:
这是一个带有“单引号”和“双引号”的演示字符串。
...会成为:
这是一个带有 \'single-quotes\' 和 \"double-quotes\" 的演示字符串。
JavaScript 是否有像 PHP 的addslashes
(或addcslashes
)函数那样的内置函数来为需要在字符串中转义的字符添加反斜杠?
例如,这个:
这是一个带有“单引号”和“双引号”的演示字符串。
...会成为:
这是一个带有 \'single-quotes\' 和 \"double-quotes\" 的演示字符串。
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());
编辑:
按照评论中的建议,谁关心 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
转义字符串中几乎所有有问题的字符,以进行正确的 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));