我正在寻找与PHP addSlashes
。
我找到了很多版本,但没有一个版本处理\b
,\t
,\n
,\f
或\r
。
要完成,此jsFiddle应提醒:\b\t\n\f\r"\\
答案 0 :(得分:7)
function addslashes(string) {
return string.replace(/\\/g, '\\\\').
replace(/\u0008/g, '\\b').
replace(/\t/g, '\\t').
replace(/\n/g, '\\n').
replace(/\f/g, '\\f').
replace(/\r/g, '\\r').
replace(/'/g, '\\\'').
replace(/"/g, '\\"');
}
注意我是如何使用\u0008
将\b
替换为\\b
的。 JavaScript的正则表达式语法似乎不接受\b
,但它接受\u0008
。 JavaScript的字符串文字语法同时识别\b
和\u0008
。
答案 1 :(得分:2)
或来自phpjs.org
的这个function addslashes(str){
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
答案 2 :(得分:1)
更短且令人惊讶more efficient:
function as(str) {
var a = {};
a[str] = 1;
return JSON.stringify(a).slice(1,-3);
}
(slice(2, -4)
如果您不需要围绕字符串的引号
答案 3 :(得分:0)
您需要使用反斜杠\来转义特殊字符。简单而简短-
❯ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED
6fcfdad92d16 docker-sonarqube-developer "./bin/run.sh" 16 hours
它将也转义包括这些特殊字符。
NULL(0x00)-> \ 0 [这是一个零,而不是字母O]
BS(0x08)-> \ b
TAB(0x09)-> \ t
LF(0x0a)-> \ n
CR(0x0d)-> \ r
SUB(0x1a)-> \ Z
“(0x22)-> \”
%(0x25)-> \%
'(0x27)-> \'
\(0x5c)-> \
_(0x5f)-> _