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

Regex 如何检查所选正则表达式单词是否包含子字符串?,regex,Regex,我创建了一个正则表达式来匹配.vue组件 它应该匹配所有的组件,这些组件的基名不以Async结尾。因此,除了文件名(不带扩展名)以Async结尾的组件外,所有.vue组件都应该匹配 所以这些不应该匹配 ./deals/deal/countdown/CountdownWarningAsync.vue ./test/deal/countdown/SomeComponentAsync.vue 这些应该是 ./deals/deal/countdown/AsyncCountdownWarning.vue

我创建了一个正则表达式来匹配
.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
结尾的basename不是


JS不支持lookbehinds,或者说实话,它在googlechrome的V8引擎上有一个不成熟的实现,但其他主要浏览器没有做到这一点

使用负前瞻:

\/[A-Z](?!\w*Async\.vue$)\w+\.vue$

正则表达式细分:

  • \/[A-Z]
    匹配
    /
    和大写字母
  • (?!
    开始负前瞻
    • \w*
      匹配以下字母
    • Async\.vue$
      到目前为止
  • 前瞻结束
  • \w+
    匹配单词字符
  • \.vue$
    .vue
    扩展

如果只需要匹配的
文件名,而不需要扩展名,可以尝试以下操作:

[^\/]*(?<!Async)(?=\.vue)
[^\/]*(?

请指定您在标记中使用的语言