【发布时间】:2015-07-23 21:24:42
【问题描述】:
我需要找到所有接受超过 X 个参数的函数签名(比如 2)。
我尝试了类似function\s*\((\w*,){3,10} 之类的方法(它可以捕获所有带有 3-10 个参数的签名,但它不起作用。它的变化会产生意想不到的结果。我想我只是不太擅长正则表达式,但感谢任何帮助.
更新:我应该指出我正在编写一种代码检查工具。在许多事情中,我想找出接受超过 2 个参数的函数(因为我提倡使用带有少量参数的函数,以及在构造函数的情况下使用 1 个参数)。所以我不能打电话给arguments.length等等。
【问题讨论】:
-
函数有一个
length属性... -
好吧,JavaScript 因为大多数编程语言都不是常规语言。因此,正则表达式无法完全掌握语言。你需要一个上下文无关语法来做到这一点...
-
你不需要 CFG 来获得一个相当好的参数解析器......我认为你只是在 (\w*) 组之后缺少一些可选的空格,你需要使逗号也是可选的(所以,
(\w*,?)),以便它匹配单参数大小写。如果您正在寻找非匿名函数,您还需要在其中添加一个 \w+ 作为名称。 -
@elclanrs 即使他想找到方法,也不代表它们属于当前脚本。他可以尝试在他的 php-files (java-doc-style) 中找到某些方法
-
您需要将 \w 逗号和空格放在一个字符组中,并将其放在括号内,并有一个终止转义的括号
标签: javascript regex