2017-08-25 176 views
2

用于在webpack中使用jest的tutorial提到了这个语法:$ 1,并且我还没有弄清楚它的功能。我工作的两个项目具有相同的别名,但一个可与笑话配置:

"moduleNameMapper": { 
    "^myModule(.*)$": "<rootDir>/src/components/react", 
} 

而一个与

"moduleNameMapper": { 
    "^myModule(.*)$": "<rootDir>/src/components/react$1", 
} 

什么是1 $语法做的工作?

+0

没有和它的工作我自己,但是这似乎是对结肠的左侧的正则表达式。 parens形成一个捕获组(第1组)。在右侧的表达式中,'$ 1'是替代语法,指的是捕获组1。如果你在左侧有两套parens,那么你可以参考替换表达式中的第一组('1')和第二组('2')。捕获组编号从左到右,从最外层到最里层。 –

回答

0

Jest将取对象的关键字,并用RegExp对象包装它。所以基本上你正在写一个正则表达式字符串作为键。正则表达式中的$ 1..9美元是为比赛捕获的捕获组。通过将圆括号包围在要“保存”的模式周围来创建捕获组。

"^myModule(.*)$": "<rootDir>/src/components/react$1" 

,所以如果你有myModule/SOMETHING的进口也将被映射到:

myModule/SOMETHING => <rootDir>/src/components/react/SOMETHING" 
+1

https://docs.microsoft.com/en-us/dotnet/standard/base-types/substitutions-in-regular-expressions – Sam