javascript - 匹配所有javascript函数的正则表达式

标签 javascript regex pcre

大约一个月前,我想组织我所有的 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))*+})

https://regex101.com/r/sXrHLI/1

关于javascript - 匹配所有javascript函数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42987651/

相关文章:

javascript - 使用 jquery 垂直切换菜单

javascript - 计算属性只触发一次

php - 我应该使用 Regex 来解析我的文件,还是有更好的方法?

java - 字符串中所有数字的动态递增

r - 仅在顶层拆分带有嵌套括号的字符串,其中 "level"由括号确定

正则表达式将单词与数字匹配,但如果它只是数字则不匹配

javascript - Angular : Pass additional parameters to chained promises

javascript - 什么正则表达式可以替换所有其他单词?

php - 去除尾随非单词字符

javascript - 创建并下载一个简单的文件