【问题标题】:Syntax for OR in gulp JavaScript variablegulp JavaScript 变量中 OR 的语法
【发布时间】:2014-05-13 10:22:11
【问题描述】:

应该很容易。我在gulpfile.js 中声明了这个路径变量:

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

我想对文件扩展名使用一个简单的 OR 开关,如下所示:

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

但我找不到正确的语法!尝试过无数次排列,浏览过MDN等……

【问题讨论】:

  • 你遇到了什么错误,你已经准备好了
  • 没有错误但也没有图像输出!

标签: javascript regex gulp


【解决方案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);
    

    【讨论】:

    • 谢谢,会试一试。不过,我真正想要的是尽可能简单的东西,因为我在许多项目中和许多人中重复使用!
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    相关资源
    最近更新 更多