首页 > 解决方案 > 如何检查选定的正则表达式单词是否包含子字符串?

问题描述

我创建了一个正则表达式来匹配一个.vue组件。

它应该匹配所有基本名称以 .结尾的组件Async。因此,除了文件名(不带扩展名)以 . 结尾的组件外,所有.vue组件都应匹配Async

所以这些不应该匹配

./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

标签: regex

解决方案


JS 不支持lookbehinds,老实说,它在 Google Chrome 的 V8 引擎上有一个不成熟的实现,但其他主要浏览器还没有这样做。

使用负前瞻:

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

现场演示

正则表达式分解:

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

推荐阅读