我有以下数据可能性
fnname()
fnname(value)
fnname(value,valueN)
我需要一种方法来使用javascript regex解析它以获取数组
[fnname]
[fnname,value]
[fnname,value,valueN]
提前致谢!
答案 0 :(得分:2)
这应该适合你:
var matches = string.split(/[(),]/g).filter(Boolean);
/[(),]/g
用于分割字符类filter(Boolean)
用于丢弃结果数组中的所有空结果<强>示例:强>
'fnname()'.split(/[(),]/g).filter(Boolean);
//=> ["fnname"]
'fnname(value,value2,value3,value4)'.split(/[(),]/g).filter(Boolean);
//=> ["fnname", "value", "value2", "value3", "value4"]
答案 1 :(得分:2)
你可以尝试匹配而不是分裂,
> var re = /[^,()]+/g;
undefined
> var matches=[];
undefined
> while (match = re.exec(val))
... {
... matches.push(match[0]);
... }
5
> console.log(matches);
[ 'fnname', 'value', 'value2', 'value3', 'value4' ]
或强>
> matches = val.match(re);
[ 'fnname',
'value',
'value2',
'value3',
'value4' ]
答案 2 :(得分:2)
从其他答案中汲取灵感,并根据标识符的规则:
str.match(/\w+/g)
答案 3 :(得分:1)
像这样使用拆分:
var val = "fnname(value,value2,value3,value4)";
var result = val.split(/[\,\(\)]+/);
这将产生:
["fnname", "value", "value2", "value3", "value4", ""]
注意你需要处理空条目:) 你可以使用Array.filter:
来做到这一点result = result.filter(function(x) { return x != ""; });
答案 4 :(得分:1)
以下是如何在一行中完成的任务:
"fnname(value,value2,value3,value4)".split(/[\(,\)]/g).slice(0, -1);
将评估为
["fnname", "value", "value2", "value3", "value4"]