Регулярное выражение для получения аргументов пользовательской функции [duplicate]

1

У меня есть эти пользовательские функции 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)"]

Так что я могу работать с каждым аргументом отдельно. Благодарю.

  • 1
    регулярные выражения почти никогда не являются правильным способом для анализа рекурсивной грамматики.
  • 0
    Решил с дублированным вопросом.
Показать ещё 2 комментария
Теги:

1 ответ

0

/\(([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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню