2014-10-16 58 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