Regex解析Javascript函数调用式语法

Regex to parse Javascript function call-like syntax

本文关键字:语法 函数调用 Javascript 解析 Regex      更新时间:2023-09-26

我有以下数据可能性

fnname()
fnname(value)
fnname(value,valueN)

我需要一种方法来解析它与javascript regex获得数组

[fnname]
[fnname,value]
[fnname,value,valueN]

提前感谢!

你可以尝试匹配而不是分割,

> 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' ]

这应该可以为您工作:

var matches = string.split(/[(),]/g).filter(Boolean);
  • Regex /[(),]/g用于分割字符类
  • 中的这3个字符中的任何一个
  • filter(Boolean)用于丢弃结果数组
  • 中的所有空结果

例子:

'fnname()'.split(/[(),]/g).filter(Boolean);
//=> ["fnname"]
'fnname(value,value2,value3,value4)'.split(/[(),]/g).filter(Boolean);
//=> ["fnname", "value", "value2", "value3", "value4"]

从其他答案中获得一些灵感,并根据标识符的规则:

str.match(/'w+/g)

使用分隔符:

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 != ""; });

你可以这样做:

"fnname(value,value2,value3,value4)".split(/['(,')]/g).slice(0, -1);

计算结果为

["fnname", "value", "value2", "value3", "value4"]