如何检查所选正则表达式单词是否包含子字符串?



我创建了一个正则表达式来匹配.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)

演示

最新更新