2017-11-01 10 views
1

CSSのすべての外部リソースに一致させたい。たとえば、contentには、//cdn.com/roboto-regular.eot//cdn.com/roboto-bold.eotのような2つのリソースが含まれています。javascipt用の非貪欲な正規表現

var reg = /\/\/.*\.(js|css|jpg|eot)[^\/\/]/ig; 

var content="url(//cdn.com/roboto-regular.eot);src:url(//cdn.com/roboto-bold.eot#iefix)"; 

while ((match = reg.exec(content)) != null) console.log('match', match); 

しかし、私はすべての試合を得ることができるように、私は式が非貪欲作ることができますどのように"//cdn.com/roboto-regular.eot);src:url(//cdn.com/roboto-bold.eot#"

での式の結果?

答えて

0

あなたはマッチング文字 のリストからいくつかの文字を除外することができます:

var reg = /\/\/[^)(]*\.(js|css|jpg|eot)/ig; 
 
var content="url(//cdn.com/roboto-regular.eot);src:url(//cdn.com/roboto-bold.eot#iefix)"; 
 
while ((match = reg.exec(content)) != null) console.log('match', match);

[^)(]everything except ")" and "("を意味します。

+0

は非キャプチャグループを使用することができます(?:JS | CSS | JPG | EOT)'、へ不要なキャプチャを避ける。 –

+0

@AshishRanjanは知っていますが、不要だと言った人はいません:-P – leaf

0

正規表現の.*個数を怠け者(または欲張りではない)にする。

ここで唯一の問題は、.*が最初の試合の始めから最後の試合の最後までのすべてを消費していたと思います。

var reg = /\/\/.*?\.(?:js|css|jpg|eot)[^\/\/]/ig; 
 

 
var content="The quick brown fox jumps over the lazy dog. \n url(//cdn.com/roboto-regular.eot); some more stuff here src:url(//cdn.com/roboto-bold.eot#iefix)"; 
 

 
while ((match = reg.exec(content)) != null) console.log('match', match);

出力: `:

match //cdn.com/roboto-regular.eot),eot 
match //cdn.com/roboto-bold.eot#,eot 

Demo

+0

は、不要なキャプチャを避けるため、非キャプチャグループ: '(?:js | css | jpg | eot)'を使うことができます。 –

関連する問題