大约一个月前,我想组织我所有的 javascript 函数以按字母顺序排列它们,今天玩正则表达式让我再次想到了这个。我只想匹配外部函数以避免嵌套函数被移动并且我想几乎已经有了它,但我缺少一些东西。
我在此页面上使用 bobble bubble 的回答作为起点。 Regular Expression to match outer brackets
function\s.*\(.*\).*\{(?>[^.*\n*]+|(?R))*\}
这将匹配所有函数定义并捕获第一个大括号之前的参数。出于某种原因,当它是表达式的一部分时,我无法让它匹配换行符模式 [^.*\n*]+
,但是当它单独存在时,它匹配得很好。
我使用 Sublime 文本编辑器作为我的搜索工具,但它最终会出现在一个 JS 文件中,这可能是一种操作代码的简单方法。
最佳答案
经过一天的摆弄,这里有一个正则表达式,它将分解一个 js 文件以匹配所有命名函数,然后将其分解为函数名称、参数和主体。与 Floribon 的解决方案不同,这将匹配任何格式样式,甚至缩小,并忽略嵌套的大括号和函数。
function\s+(?<functionName>\w+)\s*\((?<functionArguments>(?:[^()]+)*)?\s*\)\s*(?<functionBody>{(?:[^{}]+|(?-1))*+})
关于javascript - 匹配所有javascript函数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42987651/