2017-02-13 13 views
0

私はこのRegExpをしばらく解決しようとしていましたが、解決策が見つかりません。JavaScript RegExp:URLと一致しないコメントに一致します

問題は次のとおりです。 通常のスタイル付きコメントを使用できるようにするCSSプリプロセッサを作成しました。このスクリプトは、スタイルシートのすべての1行を繰り返し処理します。

これは、正規表現はどこにでも行のコメントを削除するために使用されている。

line.replace(/\s{0,}\/\/\s{0,}.*?$/, '') 

それは完璧に動作し、このようなものの場合:

body { 
    background-color:red; 
} 
// body tag 
body { 
    background-color:red; // it has a red background 
} 

と結果URLが存在したときに

は、しかし、それは失敗します。

body { 
    background-image:url("http://somewhere.com"); 
} 

と結果:

body { 
    background-image:url("http: 
} 

私はURLが全体残るように見つけることができなかった正規表現に少しディテールを追加することによって、私を助けてください。

ありがとうございました!

ハッピーストライカー

+0

は、 '\ sの{0、} [^:]やってみてください。{、0} \/\/\ sのを* $' ...迅速な応答のための –

+0

おかげ?。残念ながら私はすでにこれをテストしており、その場合は動作しません。編集:申し訳ありませんが動作しますが、別の問題が発生します。なぜなら、 '' Description ''(を含む)のコメントと一致しなくなるからです。 –

+0

どのように動作しますか? –

答えて

0

それを修正するための一つの迅速かつ汚い方法は

/(?:^|\s+)\/\/.*$/ 

すなわちに正規表現を変更することです行の先頭または少なくとも1つのスペースの後にのみ一致します。

これはコメントとして認識されない

body {//foo bar 

のようなものを意味しますが、

body { //foo bar 

は次のようになります。その限り、あなたのコメントは、常にそれが動作するスラッシュの間にスペースを持っているとして、「//」の後にすべてのものに置き換えられます。この

line.replace(/\/\/ .*/, '') 

について

0

方法。 URLが//の間にスペースを持っていけないので、これは

0

正常に動作する必要があり、私はそれが単一ステップで可能であるとは思いません。 問題のある部分を回線に一時的に存在しない可能性のあるものに置き換えるのはどうですか? :)

line 
.replace(/:\/\//g, '\\') 
.replace(/\s*?\/\/.*/, '') 
.replace(/\\/g, '://'); 
関連する問題