2011-08-23 109 views

回答

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

+0

FWIW'取代(/ \ b/g,'\\ b')'在我对jsfiddle的测试中不起作用。 –

+0

我刚刚注意到了,编辑了我的答案,使用'\ u0008',它的工作原理。似乎JavaScript的正则表达式语法不能识别'\ b'。 –

+0

谢谢,效果很好。 – GAgnew

2

或者这一个从phpjs.org

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

短,令人惊讶的more efficient

function as(str) { 
    var a = {}; 
    a[str] = 1; 
    return JSON.stringify(a).slice(1,-3); 
    } 

slice(2, -4)如果你不需要绕串引号)