2014-05-13 15 views
10

Diese sollte einfach sein. Ich habe diesen Weg Variable in einem gulpfile.js erklärt:Syntax für OR in Schluck JavaScript Variable

paths = { 
    img: [ 
    'src/patternlab/**/**/*.jpg', 
    'src/patternlab/**/**/*.png' 
    ] 
}; 

Ich möchte ein einfaches verwenden oder für die Dateierweiterung wechseln, entlang der Linien von:

'src/patternlab/**/**/*.(jpg|png)' 

Aber ich kann nicht finden die richtige Syntax! Haben zahlreiche Permutationen versucht, sah durch MDN etc ...

+0

welche Fehlermeldungen erhalten Sie, haben Sie bereits gut aussehen – aelor

+0

keine Fehler zu gehen, aber keine Bilder ausgegeben entweder! –

Antwort

20

Die Muster von schluck verwendet werden, diejenigen gefördert durch die npm glob Paket, das verwendet keine präzise RegexMuster passende Syntax, ich denke, weil diese Dinge beginnen schrecklich aussehen wenn es gegen Pfade passt.

die Dokumentation in Bezug auf minimatch (von glob verwendet) decken Sie Ihren beschriebenen Fall:

'/**/*.+(jpg|png|tiff)' 
+0

funktioniert spiffig –

1

Haben Sie versucht:

^src\/patternlab\/.{2}\/.{2}\/.\.(jpg|png)$ 

die Regex Sie auch Dateien erwähnt wird übereinstimmen, die wie some.png something else Dateinamen haben.

versuchen, dies in der Konsole:

var newarr = [] 
var paths = { 
    img: [ 
    'src/patternlab/**/**/*.jpg', 
    'src/patternlab/**/**/*.png', 
    'src/patternlab/**/**/*.tiff', 
    'src/patternlab/**/**/*.jpg' 
    ] 
}; 
for(var i=0;i<paths.img.length;i++){ 
    if (/^src\/patternlab\/.{2}\/.{2}\/.\.(jpg|png)$/.test(paths.img[i])){ 
    newarr.push(paths.img[i]); 
    } 
} 

console.log(newarr); 
+0

Vielen Dank, wir werden es versuchen. Was ich wirklich möchte, ist jedoch so einfach wie möglich, da ich in einer Reihe von Projekten und mit einer Reihe von Leuten wiederverwendet werde! –