2014-10-16 70 views
0

在下面的字符串,的Javascript:用###替換逗號 - 只有在雙引號

'This "is, "just, for", Test", ignore it. My name is "FirstName, LastName".' 

我想要替換所有逗號(,)只有雙引號(「」)與##內#。

現在我只找到(「」)的匹配模式,但需要構建正則表達式來替換逗號。

/".*?"/g 

你能幫我嗎?預先感謝;)

預期o/p:這個「是###」只是###爲「###測試」,忽略它。我的名字是「FirstName ### LastName」。

注意:這不是「Find comma in quotes with regex and replace with HTML equiv」的騙局。請看我預期的o/p(即使我想用內部雙引號替換逗號)。

回答

3

可以使用回調做到這一點...

var r = s.replace(/"[^"]+"/g, function(v) { 
     return v.replace(/,/g, '###'); 
}); 
+0

哇偉大的:),能否請您解釋一下究竟是什麼第一和第二取代在做什麼? – 2014-10-16 23:34:31

+0

第一個替換符合雙引號和它們之間的所有內容'v'(匹配的內容),第二個替換替換雙引號內的所有逗號。 – hwnd 2014-10-16 23:36:54

+0

感謝您的回覆。我在這裏有一個疑問,要匹​​配雙引號我們可以使用「/".*?"/g」也知道,請你解釋一下爲什麼你用否定類[^「],我的意思是你爲什麼要談判」裏面的雙報價?,預先感謝。 – 2014-10-16 23:42:03