我创建了一个正则表达式来匹配.vue
组件。
它应匹配基名称不以Async
结尾的所有组件。因此,除文件名(不带扩展名)以Async
结尾的组件外,所有.vue
组件都应匹配。
所以这些不应该匹配
./deals/deal/countdown/CountdownWarningAsync.vue
./test/deal/countdown/SomeComponentAsync.vue
这些应该。
./deals/deal/countdown/AsyncCountdownWarning.vue
./deals/deal/countdown/SomeComponent.vue
./recenthotels/RecentHotels.vue
我知道如何在没有Async
部分的情况下捕获它,但是如何检查基本名称是否以Async
结尾?
https://regex101.com/r/0vXtGf/1
JS不支持lookbehinds,或者说实话,它在Google Chrome的V8引擎上有一个不成熟的实现,但其他主要浏览器还没有这样做。
使用负面的前瞻:
/[A-Z](?!w*Async.vue$)w+.vue$
现场演示
正则表达式细分:
/[A-Z]
匹配/
和大写字母(?!
消极展望的开始w*
匹配以下字母Async.vue$
到此为止
)
展望结束w+
匹配单词字符.vue$
高达.vue
扩展
如果你只想要匹配的filename without extension
,你可以试试这个,
[^/]*(?<!Async)(?=.vue)
演示