2017-09-26 25 views
0

我试图从文本输入消毒引号。现在我的代码是:单引号不被JavaScript替换?

string = string.replace(/'/g, '\''); 
string = string.replace(/"/g, '\"'); 

我的输出已取代所有双引号,但单引号仍然存在。我对我的正则表达式很有信心,并且之前没有替换函数的问题。有没有可能mySQLdb搞砸了?我张贴它,然后几乎立即获得。这似乎是这样一个简单的问题,但它真的让我难住

+0

有机会的话,你认为什么是'撇号“,实际上是一个”重音符号“,甚至是一个左右”单引号“。看看这个https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html –

回答

3

您的替换为空操作,因为反斜杠被字符串文字本身消耗,并且不存在于实际字符串值中。

相反转义反斜线才能真正得到一个在你的字符串:

string = string.replace(/'/g, "\\'"); 
string = string.replace(/"/g, '\\"'); 

当然,你可以做到这一点在一个操作:

string = string.replace(/(['"])/g, "\\$1"); 
+0

哦,哇!我应该看到这个。非常感谢。问题,替换字符串\\ $ 1是什么? –

+0

'$ 1'是在常规表达式中捕获组匹配的反向引用(用圆括号表示)。所以这将是引用,无论它是哪一个。 ''''''是转义反斜杠,所以是一个反斜杠。 – trincot

+0

它做到了!道歉,我无法选择一个答案,它完全放弃了我的想法回来做 –