答案 0 :(得分:5)
如果回调没问题,你可以选择这样的东西:
var str = '"test, test2, & test3",1324,,,,http://www.asdf.com';
var result = str.replace(/"[^"]+"/g, function (match) {
return match.replace(/,/g, '|');
});
console.log(result);
//"test| test2| & test3",1324,,,,http://www.asdf.com
答案 1 :(得分:0)
与正则表达式版本相比,这是非常复杂的,但是,如果只是为了实验,我想这样做:
var PEG = require("pegjs");
var parser = PEG.buildParser(
["start = seq",
"delimited = d:[^,\"]* { return d; }",
"quoted = q:[^\"]* { return q; }",
"quote = q:[\"] { return q; }",
"comma = c:[,] { return ''; }",
"dseq = delimited comma dseq / delimited",
"string = quote dseq quote",
"seq = quoted string seq / quoted quote? quoted?"].join("\n")
);
function flatten(array) {
return (array instanceof Array) ?
[].concat.apply([], array.map(flatten)) :
array;
}
flatten(parser.parse('foo "bar,bur,ber" baz "bbbr" "blerh')).join("");
// 'foo "barburber" baz "bbbr" "blerh'
我不建议你在这种特殊情况下这样做,但也许会产生一些兴趣:)
PS。 pegjs
可以在这里找到:(我不是作者,没有隶属关系,我只是喜欢PEG)http://pegjs.majda.cz/documentation