JavaScript .spec 文件的正则表达式先行

JavaScript Regex Lookahead for .spec Files

我想省略 .spec.js 文件并只删除 .js 文件。我有这个,但它不起作用:

(?!.*\.spec\.js$)*.js')

有什么建议吗?

您可以使用 positive lookahead 查看 .spec 是否出现在 .js 之前并相应地过滤掉它。此正则表达式将仅匹配 .exec.js 个文件。

正则表达式: .*?(?=\.spec).*?\.js

解释:

  • .*? 匹配文件名。

  • (?=\.spec)如果有.spec存在,会消极地往后看。如果是,则整个匹配将被丢弃。

  • .*?\.js 匹配文件名的其余部分和末尾的 .js 扩展名。

Regex101 Demo


或者 不使用 lookahead

正则表达式: .*?(\.spec).js

解释:

  • .*? 匹配初始文件名。

  • (\.spec) 匹配 .spec(如果存在)。

  • .js 分机。

Regex101 Demo

我不知道这有可能在没有后视的情况下在单个正则表达式中省略 *.spec.js 文件的同时获取所有 *.js 文件。或者,您可以只调用两次 endsWith():

filename.endsWith('.js') && !filename.endsWith('.spec.js')