У меня есть эти пользовательские функции and()
и or()
, и мне нужно получить аргументы внутри этих функций:
and(one,two,three) // ["one", "two", "three"]
Я делаю это с помощью регулярных выражений и split:
var string = 'and(one,two,three)';
var reg = /(and|or)\((.*)\)/g;
var match = reg.exec(string);
var args = match[2].split(','); // ["one", "two", "three"]
Но теперь, если я добавлю еще одну функцию внутри функции, вот так:
and(one,two,or(three,four)) // ["one", "two", "or(three", "four)"]
Он разделяет внутреннюю функцию из-за split()
.
Мне нужно регулярное выражение, которое возвращает все аргументы внутри функции, как это:
and(one,two,or(three,four)) // ["one", "two", "or(three,four)"]
Так что я могу работать с каждым аргументом отдельно. Благодарю.
/\(([a-zA-Z_0-9].*?)\
это регулярное выражение принимает все между()
var str = 'and(one,two,three)';
result = str.match(/\(([a-zA-Z_0-9].*?)\)/g).join("").substring(1, str.length - 5).split(",")
console.log(result);