images/**/*.{png,svg}
images/**/*.+(png|svg)
Когда я тестирую их, они обычно дают тот же результат. Но только нужно убедиться, что они точно такие же.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Они нет точно такие же, и оба потенциально могут давать разные результаты — обратитесь к шариковый праймер для получения дополнительной информации. Здесь утверждается:
+(pattern|pattern|pattern)Matches one or more occurrences of the patterns provided.
Ваш второй шаблон; images/**/*.+(png|svg), будет соответствовать одно или несколько вхождений либо png, либо svg в конце имени файла.
Тем не менее, ваш первый шаблон; images/**/*.{png,svg}, будет соответствовать только тогда, когда в конце имени файла есть один случай либо png, либо svg.
Пример:
Допустим, у нас есть четыре файла с именами:
foo.svgfoo.svgsvgfoo.pngfoo.pngpngpngи их пути:
.
├── images
│ ├── ...
│ └── quux
│ ├── foo.svg
│ ├── foo.svgsvg
│ ├── foo.png
│ └── foo.pngpngpng
Совпадающие результаты
Учитывая ваши два примера шаблонов - ваш первый шаблон; images/**/*.{png,svg}, будет соответствовать только двум следующим путям:
images/quux/foo.svgimages/quux/foo.pngПримечание: пути к файлам foo.svgsvg и foo.pngpngpng проигнорированы.
Однако ваш второй шаблон; images/**/*.+(png|svg) будет соответствовать всем четырем путям к файлам, а именно:
images/quux/foo.svgimages/quux/foo.svgsvgimages/quux/foo.pngimages/quux/foo.pngpngpng"When I test them they usually produce the same result."
Это связано с тем, что маловероятно, что у вас когда-либо был файл с таким расширением, как .pngpng или .svgsvgsvg (т. е. когда он имеет более одного вхождения png или svg в конце). И маловероятно, что вы когда-нибудь будете.
Тем не менее, я рекомендую вам использовать первый шаблон глобуса, то есть images/**/*.{png,svg}, так как он более лаконичен для того, что вы на самом деле хотите сопоставить.