我需要使用正则表达式匹配webpack规则的文件扩展名。我想针对svg文件制定两个单独的规则:*.svg
和*.icon.svg
。
这些规则必须互斥。通过测试/\.icon.svg$/
很容易捕获* .icon.svg场景。但是,捕获所有.svg
扩展名的表达式应该是什么,排除以.icon.svg
结尾的文件?
.icon.svg
config.module.rules.push({
test: /\.svg$/,
loader: 'vue-svg-loader'
})
答案 0 :(得分:1)
匹配所有.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'
},
答案 1 :(得分:0)
这将成功。
{
test:/^(?!.*.icon)\.svg$/i
...
}
这个正则表达式使用了一个称为负向前瞻的东西,所以基本上它会在“.svg”之前排除任何包含.icon的东西