如何获得正则表达式来匹配以“.js”结尾而不是“.test.js”的文件?

时间:2017-02-11 13:42:02

标签: javascript regex webpack

我正在使用webpack,它使用正则表达式将文件提供给加载器。我想从构建中排除测试文件,测试文件以.test.js结尾。所以,我正在寻找一个匹配index.js而不是index.test.js的正则表达式。

我尝试使用

的负回顾断言
/(?<!\.test)\.js$/

但它表示表达无效。

SyntaxError: Invalid regular expression: /(?<!\.test)\.js$/: Invalid group

示例文件名:

index.js          // <-- should match
index.test.js     // <-- should not match
component.js      // <-- should match
component.test.js // <-- should not match

3 个答案:

答案 0 :(得分:4)

你去了:

^(?!.*\.test\.js$).*\.js$

working on regex101.com

<小时/> 正如其他人所提到的,JavaScript使用的正则表达式引擎不支持所有功能。例如,不支持负面反对

答案 1 :(得分:2)

Javascript不支持负面的lookbehinds,但看起来很简单:

^((?!\.test\.).)*\.js$

DEMO

答案 2 :(得分:1)

&#13;
&#13;
var re=/^(?!.*test\.js).*\.js$/;
console.log(re.test("index.test.js"));
console.log(re.test("test.js"));
console.log(re.test("someother.js"));
console.log(re.test("testt.js"));
&#13;
&#13;
&#13;