2013-10-12 7 views
6

* /?を含む正規表現 を含むコードのブロックを賢明にコメントする方法があるかどうか知っていますか?正規表現を含むブロックにコメントする方法

私は自分自身がこの命令を含むブロックをコメントした。例えば

... 

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

... 

しかし、私はブロックコメント場合:

/* 

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

*/ 

を、その後のJavaScriptはコメント終値として正規表現を解釈し、ファイルを解析することはできません。問題の行の前に//を置いてみましたが、それは助けにはなりません。ブロック内のすべての行をコメントしたり、正規表現の内容を変更したりすることはありません。

これを行うには巧妙な方法がありますか?

+2

regexpを '/(.*)/'に変更してください。 –

+0

はいノードでコードを実行すると失敗します。 –

+0

'/.*/'は '/.? /'と書くこともできます。 – georg

答えて

2

/(.*)/にあなたの正規表現を変更します。これを行うには

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

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

u_mulder:私はあなたのソリューションが好きですが、私がreを変更したくないと言ったとしても、これはコードの実行に実用的な影響を及ぼさない変更です... –

+1

'実行コードには実質的な影響はありません。私はそれを提案した理由) –

+1

この特定のケースでは何の効果もありませんが、問題のある箇所で式を構築できます(たとえば正規表現を括弧で囲むとキャプチャグループが変更されます) – SheetJS

2

私の "賢い" 道...

関数にして、あなたのコードを移動し、次のように:

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

あなたはそれを使用することができます

/* 
mP(); 
*/ 

基本的に正規表現を変更しないでブロックコメントを自由に使用できるように正規表現を移動します。

+0

良い方法。簡単です。私は自分でそれを考えていたはずです... –

+0

@AndreaParodi時々あなたは目の第二のペアが必要です:) – Charlie74

1

は、私は最高の答えがすでに選択されているので、私は遅刻を知っていますので、私は空の非キャプチャグループで終わることをお勧め「巧妙なトリック」を探していました:

/.*(?:)/ 

相当する:

/.*/ 

あなたが任意のコードを変更する必要はしたくない場合には、最も便利です。 (例えば、リファクタリングやキャプチャグループの導入による副作用)意味的にも同じです(キャプチャグループを導入しないと、ロジックを書き直す必要があります)。プロキシ。

公式のECMAScript仕様(JavaScript言語に基づいています)は、空の非キャプチャグループ/(?:)/を使用して "空の"正規表現を表すことを実際に推奨しています。

関連する問題