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

时间:2017-03-23 21:49:58

标签: javascript regex pcre

我想组织我所有的javascript函数,在一个月前左右按字母顺序排列,今天正在播放一个正则表达式让我再次想到这一点。我只想匹配外部函数,以避免嵌套函数被移动,我认为几乎已经有了它,但是有些东西我不知道了。

我在这个页面上使用了bobble bubble的回答作为起点。 Regular Expression to match outer brackets

function\s.*\(.*\).*\{(?>[^.*\n*]+|(?R))*\}

这将匹配所有函数定义并捕获第一个大括号之前的参数。出于某种原因,我不能使它与新行模式[^.*\n*]+相匹配,而它是表达式的一部分,但是当它完全独立时它匹配得很好。

我使用Sublime文本编辑器作为我的搜索工具,但它最终会在JS文件中作为操作代码的简单方法。

2 个答案:

答案 0 :(得分:1)

经过一天摆弄它之后,这里有一个正则表达式,它将分解一个js文件以匹配所有已命名的函数,然后将其分解为函数名,参数和正文。与Floribon的解决方案不同,它将匹配任何格式化样式,甚至缩小,并忽略嵌套的大括号和函数。

<button type="button" id="muteButton" class="btn-cust  btn-trans mutemic" title="Mic" >
<i class="material-icons" onclick = "muteAudio()">mic</i>
</button>

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

答案 1 :(得分:0)

这似乎与我的所有功能及其身体相匹配(除了在一行中定义的那些,这需要额外的表达)

function.*\(.*\).*\{(.|\n)*?\n\}

如果您不想抓住身体,只需添加?:

function.*\(.*\).*\{(?:.|\n)*?\n\}

我们的想法是匹配,直到我们完成一个新的行和一个结束的花括号:这样,身体内的任何支架(或内部功能)都不会与我们的搜索相冲突。