我需要使用正则表达式匹配 webpack 规则的文件扩展名。我想为目标 svg 文件制定两个单独的规则:*.svg
和 *.icon.svg
。这些规则必须是互斥的。通过测试/.icon.svg$/
很容易捕获 *.icon.svg 场景。但是,捕获所有.svg
扩展名(不包括以 .icon.svg
结尾的文件(的表达式应该是什么?
.icon.svg
的规则示例
config.module.rules.push({
test: /.svg$/,
loader: 'vue-svg-loader'
})
匹配除.icon.svg
之外的所有.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'
},
这
就可以了。
{
test:/^(?!.*.icon).svg$/i
...
}
这个正则表达式使用一种叫做否定前瞻的东西,所以基本上它会排除在".svg"之前包含 .icon 的任何内容