【问题标题】:Match paths that do not have __magic__ folders匹配没有 __magic__ 文件夹的路径
【发布时间】:2016-01-25 17:21:34
【问题描述】:

我有一个组件树,该树内部是__magic_names__ 文件夹(例如__tests____fixtures__ 等)。我想过滤掉这些__magic_names__ 文件夹中的所有文件。我正在使用 webpack 并使用 require.context 来获取我的组件 - 而且我不希望我的测试与我的生产代码一起发布。

我有以下正则表达式,应该过滤掉每个包含双下划线的文件路径。不幸的是,它也匹配带有__magic__ 文件夹的路径:

^./((?!=__)[^/]+?(?!=__)/)*((?!=__)[^/]+?(?!=__)).jsx?$

应该工作:

./SomeComponent.js
./SomeComponent.jsx
./SomeComponent/SomeComponent.js
./SomeComponent/SomeComponent.jsx
./SomeComponent/ChildComponent/Child.js
./SomeComponent/ChildComponent/Child.jsx

应该失败

./__magic__/SomeComponent.js
./__magic__/SomeComponent.jsx
./SomeComponent/__magic__/SomeComponent.js
./SomeComponent/__magic__/SomeComponent.jsx
./SomeComponent/__magic__/ChildComponent/Child.js
./SomeComponent/__magic__/ChildComponent/Child.jsx
./SomeComponent/ChildComponent/__magic__/Child.js
./SomeComponent/ChildComponent/__magic__/Child.jsx

Debuggex 以这种方式可视化它:

这里有一个指向Debuggex Demo 的链接,供那些想要更详细地使用它的人使用。

我做错了什么?

【问题讨论】:

标签: javascript regex reactjs webpack


【解决方案1】:

你可以像这样匹配所有没有双下划线的东西。

/^((?!__).)*$/gm

【讨论】:

    【解决方案2】:

    事实证明,问题只是我使用了错误的语法来进行负面预测。 (?!=__) 是错的,(?!__) 是对的。

    更正的正则表达式:

    ^./((?!__)[^/]+?(?!__)/)*((?!__)[^/]+?(?!__)).jsx?$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多