2013-10-12 36 views
6

你知道是否有一種巧妙的方式來評論包含正則表達式 包含* /?的代碼塊嗎?如何評論包含正則表達式的塊

比如我發現自己評論包含此指令塊:

... 

messageParser.run('messageFetched',/.*/); 

... 

但如果我評論了塊:

/* 

messageParser.run('messageFetched',/.*/); 

*/ 

然後JavaScript的解釋正則表達式作爲註釋關閉和無法解析的文件。我嘗試把//放在違規行的前面,但它沒有幫助,我不想評論該塊中的每一行,也不改變正則表達式的內容。

有一個聰明的方法來做到這一點?

+2

修改正則表達式爲'/(.*)/' –

+0

是的,我用節點運行代碼,它失敗 –

+0

'/.*/'也可以寫成'/.?/'。 – georg

回答

2

修改你的正則表達式來/(.*)/

messageParser.run('messageFetched',/(.*)/); 

/* 
messageParser.run('messageFetched',/(.*)/); 
*/ 
+0

u_mulder:我喜歡,你的解決方案,即使如果我說我不想改變重新,這是對運行代碼沒有實際影響的改變... –

+1

'對運行代碼沒有實際影響' - 這是爲什麼我建議它) –

+1

在這個特定的情況下,它沒有任何作用,但是你可以構造表達式,它在哪裏很重要(例如,如果你將正則表達式包裝在parens中,捕獲組會被改變) – SheetJS

2

我的 「聰明」 的方式做到這一點...

移動你的代碼的功能,如:

function mP() { 
    messageParser.run('messageFetched',/.*/); 
} 

您可以使用

/* 
mP(); 
*/ 

基本上,它移動你的正則表達式,所以你可以自由地使用塊註釋而不必修改正則表達式代碼。

+0

好方法。和簡單。我應該自己想想...... –

+0

@AndreaParodi有時你只需要第二雙眼睛:) – Charlie74

1

我知道我遲到了,因爲一個最好的答案已經被選定,但因爲你正在尋找一個「巧招,」我會建議一個空的非捕獲組結束:

/.*(?:)/ 

相當於:

/.*/ 

如果您不想更改任何代碼,這是最方便的。 (例如通過重構或引入捕獲組的副作用)。它的語義也是相同的(引入一個捕獲組將不會,並且可能導致邏輯需要被重寫),並且與功能相比具有更少的負面性能影響代理。

官方ECMAScript規範(JavaScript語言基於的)實際上建議使用空的非捕獲組/(?:)/來表示「空白」正則表達式。