正则表达式从文件名中排除某个单词

时间:2019-06-20 16:36:32

标签: javascript node.js regex jestjs

我想开玩笑地调整我的单元测试,而不是我的集成测试。它们与测试的组件一起位于相同的文件夹中。单元测试具有文件名模式* .test.js,其中*是组件名称。集成测试的格式为* .integration.test.js,其中*为组件名称。

我对Regex不好。我想出的最好的方法是:

(?!\bintegration\b)

这不包括所有集成测试,但现在开玩笑地试图运行我的index.js文件。我需要该表达式排除“集成”,但包括“测试”

1 个答案:

答案 0 :(得分:0)

我的猜测是,也许我们可能想要一个类似于以下内容的表达式:

(?=.*\bintegration\b.*)(?!.*\btest\b.*).*

Demo

const regex = /(?=.*\bintegration\b.*)(?!.*\btest\b.*).*/gm;
const str = `integration, but include 'test'
integration, but include 'tes
integration, but include 'tests
.integration.test.js
.integration.tests.js`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}