有没有人有正则表达式匹配javascript函数?

com*_*lez 6 javascript regex

我需要一个正则表达式可以匹配javascript函数

function abc(var1, var2){
  ..
}

// and

abc : function(var1, var2){
  ...
},
Run Code Online (Sandbox Code Playgroud)

小智 8

我知道这个问题是5岁,但相反的是其他人说,其实我已经炮制了一个非常有效的方式这样做,你问.虽然相当复杂,但我已经在我自己的项目中多次使用过这种情况而且我还没有打嗝......希望我早点看到这个问题.希望这有所帮助(如果不适合你,希望那些正在寻找类似解决方案的人)

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

  • 可爱,但这里有一个没有正确解析的简单示例: function() { return "}" } (2认同)

Bar*_*ers 4

在 JS 中,函数可以包含函数(函数又可以包含函数,依此类推):

x = function() {
  this.y = function() { /* ... */ };
  function z() { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud)

此外,您还可以使用字符串文字或注释,其中可以包含看起来像函数的(子)字符串:

var s = "function notAFunction(){}";
/* 
function alsoNotAFunction(){}
*/
Run Code Online (Sandbox Code Playgroud)

或者包含正则表达式可能会出错的部分函数:

function f() {
  var s = "not a closing bracket: } ";
}
Run Code Online (Sandbox Code Playgroud)

所以,回答你的问题,正则表达式是什么来匹配 JS 中的函数:它不存在。您应该/可以为此使用适当的解析器。