Я борюсь с созданием регулярного выражения для соответствия параметрам функции js. Я работаю над проектом, где мне нужно разобрать javascript, и мне нужно регулярное выражение, которое будет соответствовать всему, что находится между круглыми скобками для функций.Регулярное выражение для аргументов в функции Javascript между круглыми скобками
function foo (bar) {} // should match 'bar'
Foo.bar = function (baz, obj) {} // should match only 'baz, obj'
Он должен соответствовать только материал с после того, как «функции» или «функции Foo», в основном, так что не соответствует вещи между Paren внутри функциональных органов. Мне нужно это, чтобы исключить фактические символы ('и') '. Также я пробел между «функцией» или именем функции и открытием »(« может быть бесконечным ».
Вот что у меня есть, и я получаю совпадения только для второго примера, и только если есть только один пространство между «функции» и «(» Regex не мой конек, так что это не может быть даже возможно, но благодаря заранее
(?<=,|\()([#a-z0-9]+)(?=(,?[#a-z0-9]+)+\)|\))
Update:.! Это еще одно выражение я пытаюсь получить работу . Это ближе, чем выше, но позволяет только одно пространство между «функцией» и «(», а также не распространяется на корпус 1 выше.
\b(?<=(function.)\()([^),]+)[^)]*\b
Я думаю, что вам предстоит долгая ночь, если вы надеетесь использовать регулярное выражение для разбора javascript. Для этой задачи существуют синтаксические анализаторы языка. Вы также можете легко найти файл грамматики javascript, подходящий для ваших нужд. Если вы надеетесь пойти гораздо дальше, чем этот конкретный вопрос, вы должны рассмотреть другие методы. –
Почему вы не начинаете регулярное выражение с 'function'? – elclanrs
Что делать, если какой-либо синтаксис функции появляется в строковом литерале? Должно ли это соответствовать? Зачем вам это нужно в первую очередь? –