我很努力構建一個正則表達式來匹配js函數參數。我在一個項目中,我需要解析JavaScript,我需要正則表達式來匹配函數括號中的所有內容。正則表達式匹配括號中的Javascript函數
function foo (bar) {} // should match 'bar'
Foo.bar = function (baz, obj) {} // should match only 'baz, obj'
它應與「功能」或「功能富」後只匹配的東西,基本上所以它不匹配函數體內部括號之間的事情。我需要它來排除實際的'('和')'字符。此外,我'功能'或函數名稱和開幕'('之間的空白可以是無限的
這是我到目前爲止,我只接受匹配的第二個例子,只有只有一個。提前「功能」和「(」正則表達式是不是我的強項所以這可能甚至是不可能的,但由於間距
(?<=,|\()([#a-z0-9]+)(?=(,?[#a-z0-9]+)+\)|\))
更新: 這是我試圖讓工作的另一種表達,它比上面的那個更接近,但只允許'function'和'('之間只有一個空格,也不包括上面的例子1
\b(?<=(function.)\()([^),]+)[^)]*\b
如果你希望使用正則表達式來解析javascript,我認爲你是在漫長的夜晚。有這個任務的語言解析器。您也可以輕鬆找到適合您需求的JavaScript語法文件。如果你希望遠遠超過這個具體問題,你應該考慮其他技術。 –
爲什麼不用'function'啓動正則表達式? – elclanrs
如果某些函數語法出現在字符串文字中,該怎麼辦?它應該匹配嗎?爲什麼你首先需要這個? –