Javascript正则表达式用逗号分割行

时间:2014-03-24 09:17:41

标签: javascript regex

我想要一个javascript的正则表达式,它应该用逗号分隔行,不应该在括号内分割表达式

例如:

BuiltInFunctions.REPLACE_FIRST,Type.STRING, Type.STRING, 2, getArgTypeIns(Type.STRING, Type.STRING, Type.BOOLEAN) 

BuiltInFunctions.REPLACE_FIRST
Type.STRING
Type.STRING
2
getArgTypeIns(Type.STRING, Type.STRING, Type.BOOLEAN)

2 个答案:

答案 0 :(得分:2)

考虑简化您的操作:

var input = "BuildInFunctions...........";
var parentheses = [];
var replaced = input.replace(/\(.*?\)/g,function(m) {
    parentheses.push(m);
    return "{{PARENS:"+(parentheses.length-1)+"}}";
});
var parts = replaced.split(",");
var result = parts.map(function(part) {
    return part.replace(/\{\{PARENS:(\d+)\}\}/g,function(_,i) {return parentheses[i];});
});

一般的想法是提取所有带括号的表达式,然后处理拆分,然后将带括号的东西放回去。比使用正则表达式(我不确定是否可能的话)尝试这样做容易得多说实话)

答案 1 :(得分:2)

这个正则表达式将用逗号分隔,除了后面括号的那些:

/,(?![^(]*\))/m

<强> DEMO