任何人都可以帮助我在javascript文件中使用正则表达式查找方法名称。
答案 0 :(得分:2)
(?!function\s+)([_$a-zA-Z][_$a-zA-Z0-9]*)(?=\s*\()
尝试使用regexp解析JavaScript时,可能会遇到许多问题。首先,我们有一些在正常情况下会被词法分析器忽略的事情。
WhiteSpace LineTerminator Comment
现在,空白空间的概念并不像空间角色那么简单。以下是正则表达式中必须包含的完整字符列表。
WhiteSpace: '\u0009' '\u000c' '\u00a0' '\u180e' '\u2001' '\u2003' '\u2005' '\u2007' '\u2009' '\u202f' '\u3000' '\u000b' '\u0020' '\u1680' '\u2000' '\u2002' '\u2004' '\u2006' '\u2008' '\u200a' '\u205f' '\ufeff'
我们的正则表达式在复杂程度上迅速膨胀。现在我们有LineTerminator生产,这再一次不像你想象的那么简单。
LineTerminator: '\u000a' '\u000d' '\u2028' '\u2029'
我不会详细介绍,但这里有几个完全有效的函数定义的例子。
function
a() {
}
function /*Why is this comment here!!!*/ a() {
}
所以我们留下了一些好消息和一些坏消息。好消息是我的简单正则表达式将涵盖大多数常见情况。只要文件写得很清楚,它应该可以正常工作。坏消息是如果你想覆盖所有角落的情况,你将会留下一个怪异的正则表达式。
注意的
我只是想说匹配有效函数标识符的正则表达式特别可怕。