2013-04-08 86 views
0

我已經想通了這個模式:有人可以告訴我錯誤在我的正則表達式行嗎?

(?<=module.exports = function routes\(\) {\n)[\S\s]*?(?=\n}) 

選擇在這個文本的花括號內的文字:

module.exports = function routes() { 
    this.root('pages#main'); 
    this.get('/dashboard', 'pages#dashboard'); 
} 

會有人請教我這是爲什麼?:無效

myVar = data.match(/(?<=module.exports \= function routes\(\) {\n)[\S\s]*?(?=\n})/); 
+0

爲什麼你需要這樣做? – Blender 2013-04-08 05:58:40

+2

爲什麼使用正則表達式來解析JavaScript代碼?爲什麼不使用JavaScript來解析JavaScript代碼?需要模塊。 module.exports.toString和tada,你有文本。不是那麼簡單嗎? – 2013-04-08 05:58:41

+0

我試過你的建議,我仍然得到函數routes(){在開始,所以它看起來像我仍然需要使用正則表達式來獲取只有內容到數組中。 – 2013-04-08 06:30:17

回答

1

如果toString()適用於您的情況,那麼這也應該工作

var str = module.exports.toString(); 
str = str.replace(/function [^ ]+\(\)\s*\{/, '').replace(/\}$/,''); 
+0

謝謝!這使我朝着正確的方向前進: data = data.replace(/((。| \ n)*?)module(。| \ n)exports(。| \ n)+ {/ m,'') .replace(/ \} $ /, ''); \t data = data.split(';'); – 2013-04-08 07:32:36

相關問題