2011-07-03 49 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,還有其他關於py和其他語言的討論。我相信JSLint是圍繞JS解析器構建的。 –

相關問題