2011-07-03 5 views
0

jsファイルからすべての型キャストを削除しようとしています。JS正規表現は型キャストを削除します

私が持っている現在の(ない加工)正規表現は次のとおりです。

/(?!new\s+&?!function\s+)\w+\((.+)\)/gi 

は基本的に私は、クラスのようなもの(VAR)ではなくnew Class(arg)またはfunction Func(arg)

感謝をしたいです!

答えて

3
s = "Basically I want anything like Class(var) but not new Class(arg) or function Func(arg)" 

re = /(?:(?!new|function)\b\S+|^|[^\w\s])\s*\b([A-Z]\w*\s*\(.*?\))/g 

for (var match; (match = re.exec(s));) { alert(match[1]); } 

Class(var) 

を生成するが、実際のパラメータリストには、ネストされた括弧がない場合にのみ、正しくマッチします。一般的な文法はネストされたカッコ内のグループを扱うことができないので、一般に関数呼び出しを正規表現に一致させることはできません。

+0

私はあなたの答えが私が(実際にはかなり巧みに)置いた質問に答えると思うので、私はこれを与えましたが、これをスクリプトに入れた後、私が言及しなかった他のものを変え始めました。 – Jacksonkr

+0

@Jackson、あなたはあなたのスクリプトを解析し、得られた解析木を歩いてそれを修正し、それをレンダリングするための適切なJavaScriptパーサーを調べましたか? http://stackoverflow.com/questions/6511556/javascript-parser-for-javaで最近これについて議論しました。もしあなたがJavaに慣れていなければ、Pythonや他の言語のためのSOに関する他の議論があります。私はJSLintがJSパーサの周りに構築されていると信じています。 –

関連する問題