addslashes JavaScript等价物

时间:2011-08-23 13:56:48

标签: javascript regex escaping addslashes

我正在寻找与PHP addSlashes

相当的JavaScript版本

我找到了很多版本,但没有一个版本处理\b\t\n\f\r

http://jsfiddle.net/3tEcJ/1/

要完成,此jsFiddle应提醒:\b\t\n\f\r"\\

4 个答案:

答案 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)-> _