Javascript simple`replace()的第二个参数存在问题`
我不明白,为什么这个代码不能正常工作Javascript simple`replace()的第二个参数存在问题`,javascript,regex,google-chrome,replace,capturing-group,Javascript,Regex,Google Chrome,Replace,Capturing Group,我不明白,为什么这个代码不能正常工作 "a-b".replace(/-(\w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB" 它必须是在camelCase上交换CSS连字符语法的最简单解决方案 (/-(\w)/g).exec("a-b") // [ "-b", "b" ] 因此,“b”是传递给replace回调的第二个参数,第一个参数是整个匹配 "a-b".replace(/-(\w)/g, (p1, p2) => p
"a-b".replace(/-(\w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB"
它必须是在camelCase上交换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"
有人告诉我,
p1
,p2
…(在函数中)等于$1
,$2
…(在字符串中)。@DmitryParzhitsky您链接到的文章提到,传递的第一个参数是整个匹配,然后p1…pn
是parenhesized子匹配。你是对的,但是与$1
相对应的p1
是第二个参数。是的,在最后一刻我得到了它。