2017-09-26 136 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

它做到了!道歉,我無法選擇一個答案,它完全放棄了我的想法回來做 –