Функции можно определить и по-другому:
var name = function (a1, a2, a3) {};
this.name = function (a1, a2, a3) {};
var klass = {
method1: function (a1, a2, a3) {};
}
function createFunction() {
return function (a1, a2, a3) {};
}
Так что тупой парсер на регулярках не поможет. Пишите умный, с учетом контекста. Лень писать? Расковыряйте jsLint, он там преобразует текст на яваскрипте в AST. Также, видел где-то библиотеку на PHP для токенизации яваскрипта.