Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript simple`replace()的第二个参数存在问题`_Javascript_Regex_Google Chrome_Replace_Capturing Group - Fatal编程技术网

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
是第二个参数。是的,在最后一刻我得到了它。