如何在文件中找到javascript方法名称?

时间:2010-10-04 13:35:44

标签: javascript regex c#-4.0

任何人都可以帮助我在javascript文件中使用正则表达式查找方法名称。

1 个答案:

答案 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() {

}

所以我们留下了一些好消息和一些坏消息。好消息是我的简单正则表达式将涵盖大多数常见情况。只要文件写得很清楚,它应该可以正常工作。坏消息是如果你想覆盖所有角落的情况,你将会留下一个怪异的正则表达式。

注意

我只是想说匹配有效函数标识符的正则表达式特别可怕。