diff --git a/docs/string-methods.md b/docs/string-methods.md index 8b1a5d5..2fbb761 100644 --- a/docs/string-methods.md +++ b/docs/string-methods.md @@ -377,18 +377,41 @@ String.prototype.replaceAll(searchValue, replacement) `replaceAll()`的第二个参数`replacement`是一个字符串,表示替换的文本,其中可以使用一些特殊字符串。 - `$&`:匹配的子字符串。 -- `` `$` ``:匹配结果前面的文本。 +- `` $` ``:匹配结果前面的文本。 - `$'`:匹配结果后面的文本。 -- `$n`:匹配成功的第`n`组内容,`n`是从1开始的自然数。 +- `$n`:匹配成功的第`n`组内容,`n`是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则表达式。 - `$$`:指代美元符号`$`。 +下面是一些例子。 + ```javascript +// $& 表示匹配的字符串,即`b`本身 +// 所以返回结果与原字符串一致 +'abbc'.replaceAll('b', '$&') +// 'abbc' + +// $` 表示匹配结果之前的字符串 +// 对于第一个`b`,$` 指代`a` +// 对于第二个`b`,$` 指代`ab` +'abbc'.replaceAll('b', '$`') +// 'aaabc' + +// $' 表示匹配结果之后的字符串 +// 对于第一个`b`,$' 指代`bc` +// 对于第二个`b`,$' 指代`c` +'abbc'.replaceAll('b', `$'`) +// 'abccc' + +// $1 表示正则表达式的第一个组匹配,指代`ab` +// $2 表示正则表达式的第二个组匹配,指代`bc` +'abbc'.replaceAll(/(ab)(bc)/g, '$2$1') +// 'bcab' + +// $$ 指代 $ 'abc'.replaceAll('b', '$$') // 'a$c' ``` -上面例子中,`$$`表示替换的文本是单个美元符号`$`。 - `replaceAll()`的第二个参数`replacement`除了为字符串,也可以是一个函数,该函数的返回值将替换掉第一个参数`searchValue`匹配的文本。 ```javascript diff --git a/docs/string.md b/docs/string.md index 3a3d785..97b3ddc 100644 --- a/docs/string.md +++ b/docs/string.md @@ -505,10 +505,11 @@ function passthru(literals) { let i = 0; while (i < literals.length) { - result += literals[i++]; + result += literals[i]; if (i < arguments.length) { result += arguments[i]; } + i++; } return result;