如何使用正则表达式识别javascript函数

How to identify javascript functions using regex?

本文关键字:javascript 函数 识别 正则表达式 何使用      更新时间:2023-10-02

我有JS代码。

我想找到每个函数的起始位置(通过"{"号)如何使用regex找到它?

EDIT:我知道不可能100%准确,如何通过regex找到99%的函数?有什么快速的替代方案吗?

JavaScript不是一种正则语言,不能使用正则表达式进行解析。您需要使用Plain Old Code™如果您想准确地解析JavaScript。

例如,这个片段创建了一个函数:

function()
{
    alert('foo');
}

而这个片段调用了一个函数和一个代码块:

foo.
function()
{
    alert('foo');
}

这些细微差别是用一个简单的正则表达式无法理解的。

如果将其制成字符串,则可以使用此解决方案。我有一个类似的问题,我做了这个函数来找到函数:

// String with some functions to search.
var myStr =
`
foo1(){
   var blabla = null;
}
foo2 () {
   var blabla = null;
}
foo3(params) {
   var blabla = null;
}
foo4(params1,params2) {
   var blabla = null;
}
foo5(params1: string, params2: int) {
   var blabla = null;
}
`;
// Function to find functions syntax.
function searchForFunctions(str) {
   var positionStartFunctions = [];
   var functionArr = str.match(/([a-zA-Z0-9]+)'s*'({1}([a-z0-9,:'s]*)'){1}'s*'{/g);
   for(var i=0; i<functionArr.length; i++) {
      var functionLength = functionArr[i].length;
      var functionIndexMatched = str.indexOf(functionArr[i]);
      var positionOfCurlyBracket = (functionLength + functionIndexMatched);
      positionStartFunctions.push(positionOfCurlyBracket);
   }
   return positionStartFunctions;
}
var listOfCurlyBracketsFunctions = searchForFunctions(myStr);
console.log(listOfCurlyBracketsFunctions);

该函数返回一个数组,其中包含找到的每个函数的第一个花括号的索引。

我制作了这个正则表达式来匹配每个带有params或){之间有空格的函数结构。

这已经很长时间了,但也许这会帮助其他人。