我有一个组件树,在该树的内部是__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的链接,供那些想要更详细地讨论它的人使用。
我做错了什么?
答案 0 :(得分:2)
你可以匹配那些没有双下划线的东西。
/^((?!__).)*$/gm
答案 1 :(得分:0)
事实证明,问题只是因为我使用错误的语法进行负面预测。 (?!=__)
错了,(?!__)
是对的。
更正后的正则表达式:
^./((?!__)[^/]+?(?!__)/)*((?!__)[^/]+?(?!__)).jsx?$