简单 `replace()` 的第二个参数的问题
Problems with second argument of simple `replace()`
我不明白,为什么这段代码不能正常工作?
"a-b".replace(/-(\w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB"
它必须是交换 CSS 驼峰式连字符语法的最简单解决方案。
(/-(\w)/g).exec("a-b")
// [ "-b", "b" ]
因此,"b"
是传递给 replace
回调的第二个参数,第一个参数是整个匹配项。
"a-b".replace(/-(\w)/g, (p1, p2) => p2.toUpperCase())
// "aB"
编辑这样写会更清楚:
"a-b".replace(/-(\w)/g, (match, p1) => p1.toUpperCase())
// "aB"
我不明白,为什么这段代码不能正常工作?
"a-b".replace(/-(\w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB"
它必须是交换 CSS 驼峰式连字符语法的最简单解决方案。
(/-(\w)/g).exec("a-b")
// [ "-b", "b" ]
因此,"b"
是传递给 replace
回调的第二个参数,第一个参数是整个匹配项。
"a-b".replace(/-(\w)/g, (p1, p2) => p2.toUpperCase())
// "aB"
编辑这样写会更清楚:
"a-b".replace(/-(\w)/g, (match, p1) => p1.toUpperCase())
// "aB"