Синтаксис для OR в переменной gulp JavaScript

Это должно быть легко. У меня есть эта переменная пути, объявленная в gulpfile.js:

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

Я хотел бы использовать простой переключатель OR для расширения файла по строкам:

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

Но я не могу найти правильный синтаксис! Попробовали множество перестановок, просмотрели MDN и т.д.

Ответ 1

Шаблонами, используемыми gulp, являются те, которые рекламируются пакетом npm glob, который не использует точный синтаксис соответствия шаблону регулярного выражения, я полагаю, потому что эти вещи начинают выглядеть ужасающими при сопоставлении с путями.

документация, касающаяся minimatch (используемая glob), охватывает ваш описанный случай:

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

Ответ 2

Вы пробовали это:

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

указанное вами регулярное выражение также будет соответствовать файлам с именами файлов, например some.png something else.

попробуйте это в консоли:

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);