0

我需要使用正则表达式匹配 webpack 规则的文件扩展名。我想针对 svg 文件制定两个单独的规则:*.svg*.icon.svg. 这些规则必须相互排斥。通过测试 .icon.svg 很容易捕捉到 *.icon.svg 场景/\.icon.svg$/。但是捕获所有扩展名的表达式应该是什么.svg,不包括以 结尾的文件.icon.svg

的规则示例.icon.svg

config.module.rules.push({
    test: /\.svg$/,
    loader: 'vue-svg-loader'
})
4

2 回答 2

2

匹配所有.svg文件,除了.icon.svg

/(?!.*\.icon\.svg$)^.+\.svg$/

仅匹配.icon.svg

/\.icon\.svg$/

所以,这看起来像:

{
    // match all .svg files EXCEPT .icon.svg
    test: /(?!.*\.icon\.svg$)^.+\.svg$/,
    loader: 'specific-loader-name'
},
{
    // Match only .icon.svg files
    test: /\.icon\.svg$/,
    loader: 'different-loader'
},
于 2018-03-19T16:46:14.800 回答
0

这可以解决问题。

{
   test:/^(?!.*.icon)\.svg$/i 
   ...
}

这个正则表达式使用一个叫做负前瞻的东西,所以基本上它会排除任何在“.svg”之前包含.icon的东西

于 2018-03-19T17:01:30.320 回答