2013-07-15 40 views
1

我們有一個javascript stacktrace,我們在開發過程中寫入屏幕。如何替換js堆棧跟蹤以包含「行」和「位置」文本?

(OurCustom.js?635095252297740283:14:29) 
    at jquery-1.8.3.min.js?634937263102341783:2:11602 
    at Function.v.extend.map (jquery-1.8.3.min.js?634937263102341783:2:15448) 

我試圖從

(OurCustom.js?635095252297740283:14:29) 

替換最後兩個冒號

(OurCustom.js?635095252297740283 line 14 pos 29) 

我嘗試不工作。沒有什麼被取代。

stackMessage = stackMessage.replace(/_(:\d*)(:\d*)_/g, "line $1 pos $2"); 

編輯:順便說一句,這是我如何得到我的堆棧跟蹤。 (正確答案)

catch (err) 
{ 
    var stackMessage = (err.stack || err.stacktrace || "") 
         .replace(/:(\d*):(\d*)/g, " line $1 pos $2"); 
... 
{ 
+0

而原始字符串中有'_'的位置? – epascarello

+0

是的,我以爲他們是逃脫的字符。 –

回答

2

的問題是在你的正則表達式的下劃線。您應該使用

stackMessage = stackMessage.replace(/:(\d*):(\d*)/g, " line $1 pos $2") 
+0

你就像我前面10秒! – DrCord

+0

歡呼聲。從另一個SO問題中偶然提取這些下劃線。認爲他們是爲了替換而跳過括號。感謝您重新定位冒號。 –