正则表达式从路径中排除文件夹

时间:2018-03-12 23:29:15

标签: javascript regex regex-lookarounds

我有一堆像这样的文件

/foo/bar/specs/d.js
/foo/bar/spec/d.js
/foo/bar/specs/v.js
/foo/bar/specs/v.js
/node_modules/bar/specs/v.js

我需要一个将在node_modules

下排除所有内容的正则表达式

这样的事情:

(?!node_modules)\/.*\/specs\/.*\.js

不幸的是它无法正常工作

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

可能是这样的吗?

let arr = [
    '/foo/bar/specs/d.js',
    '/foo/bar/specs/d.js',
    '/foo/bar/specs/v.js',
    '/foo/bar/specs/v.js',
    '/node_modules/bar/specs/v.js'
]

arr.forEach(s => console.log(/^\/(?!node_modules).*\/.*\/specs\/.*\.js/.test(s)))

答案 1 :(得分:0)

这是一个获取不在 .git 或 node_modules 文件夹中的 .ts 和 .js 文件的正则表达式:

^(?!.*\/(node_modules|\.git)\/).*(.ts|.js)$

说明:

  • 字符串开始:^
  • 不在组中:(?!.*\/(node_modules|\.git)\/)
  • 包括文件类型组:(.ts|.js)
  • 字符串结束:$