2010-11-17 56 views

回答

3

在JS,一個功能可以包含函數(這反過來又可以包含函數,等等):

x = function() { 
    this.y = function() { /* ... */ }; 
    function z() { /* ... */ } 
}; 

此外,您可以包含字符串文字或註釋,可以包含看起來像函數的(子)字符串:

var s = "function notAFunction(){}"; 
/* 
function alsoNotAFunction(){} 
*/ 

或包含的功能部件你的正則表達式將絆倒:

function f() { 
    var s = "not a closing bracket: } "; 
} 

因此,要回答你的問題是什麼正則表達式將在JS匹配功能:它不存在。你應該/可以使用適當的解析器。

4

我知道這個問題已經5年了,但與其他人所說的相反,我實際上炮製了一個相當有效的模式,就像你所問的那樣。雖然相當複雜,但我已經在自己的項目中多次使用過這些內容,但我還沒有呃...希望我能早日看到這個問題。希望這有助於(如果不是你,希望爲那些誰正在尋找一個類似的解決方案)

function\s*([A-z0-9]+)?\s*\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)\s*\{(?:[^}{]+|\{(?:[^}{]+|\{[^}{]*\})*\})*\}

+0

可愛,但這裏是一個簡單的例子,不正確解析:function(){return「}」} – 2017-03-24 07:25:23

相關問題