3

我不明白,为什么这段代码不能正常工作?

"a-b".replace(/-(\w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB"

它必须是在 camelCase 上交换 CSS 连字符语法的最简单解决方案。

4

1 回答 1

3
(/-(\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"
于 2015-12-26T20:11:12.407 回答