求一个逗号的正则表达式

V-Far 2012-07-06 02:40:10
字符串如下:

7,11,1:2,"AAA,BBB,CCC",DDD

上面是一个字符串,现在想 匹配到
"AAA,BBB,CCC"中的逗号并替换成@(假设)
得到最后的字符串应该为:

7,11,1:2,"AAA@BBB@CCC",DDD


请教如何写这个正则表达式替换。各种语言都可以。。。
...全文
360 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
2012-07-09

str = '7,11,1:2,"AAA,BBB,CCC,sfd",DDD'
str = str.replace(/"\w+(\,\w+)+"/g, function(v){return v.replace(/,/g, "@");});
回复
IT_scamp 2012-07-09
3楼的代码应该能满足你的需求!
回复
V-Far 2012-07-09
意思就是,可能这样:
7,11,1:2,"AAA,BBB,CCC",DDD
可能这样
7,11,1:2,"AAA,BBB,",DDD'
可能这样
7,11,1:2,"AAA,BBB,CCC,adfa",DDD'
也可能这样
7,11,1:2,"AAA,BBB,CCC,asdfasdfa(忽略N个重复逗号)",DDD'
回复
V-Far 2012-07-09
[Quote=引用 1 楼 的回复:]

JScript code
var origin = '7,11,1:2,"AAA,BBB,CCC",DDD';
var after = origin.replace(/(\"\w+),(\w+),(\w+\")/, '$1@$2@$3');
[/Quote]
经过测试是可以用的。
可惜我描述不够清晰啊,
双引号之间的逗号不确定。我只需要把中间的逗号全都替换了
回复
var str = '7,11,1:2,"AAA,BBB,CCC",DDD';
var reg = /(\".*),(.*),(.*\")/gi;
var str = str.replace(reg, '$1@$2@$3');
alert(str);
回复
hch126163 2012-07-06
var str="7,11,1:2,\"AAA,BBB,CCC\",DDD,\"EEE,FFF,GGG\"HHHH";
var m = str.match(/"([^\"]+?)"/ig);

for(var i=0;i<m.length;i++){
str = str.replace(m[i],m[i].replace(/,/ig,"@"));
}
alert(str);
回复
gf05011 2012-07-06
1楼的就可以
回复
fox000002 2012-07-06
var origin = '7,11,1:2,"AAA,BBB,CCC",DDD';
var after = origin.replace(/(\"\w+),(\w+),(\w+\")/, '$1@$2@$3');
回复
发动态
发帖子
JavaScript
创建于2007-09-28

8.4w+

社区成员

Web 开发 JavaScript
申请成为版主
社区公告
暂无公告