常用用法:
- 字符串替换为字符串 str.replace(String, String);
- 正则替换为字符串 str.replace(Reg, String);
基本上这两种用法是最常见的,没什么疑问,只需要注意只能替换一次就好了。
'sss'.replace('s', 'r') // 'rss'
进阶用法:
如果使用了正则表达式,那么用法就可以稍加复杂(bian li)
先看一张表:
字符 | 替换文本 |
---|---|
$& | 与正则相匹配的字符串 |
$` | 匹配字符串左边的字符 |
$’ | 匹配字符串右边的字符 |
$1,$2,$3,…,$n | 匹配结果中对应的分组匹配结果 |
然后再看例子:
'abc'.replace(/b/, "$&123") // 'abc123'
'abc'.replace(/b/, "$`") // 'aac'
'abc'.replace(/b/, "$'") // 'acc'
'aabbcc'.replace(/(a)/, '$1zzz') // 'azzzabbcc'
'sjn@163.com'.replace(/(.+)(@)(.*)/,"$2$1") // '@sjn'
高级用法
str.replace(regValue,replaceValue)中的replaceValue可以是一个函数.
function logArguments(){
console.log(arguments);// ["jn@163.com", "n", "@", "163.com", 1, "sjn@163.com"]
return '返回值替换匹配到的字符串'
}
console.log(
'sjn@163.com'.replace(/j(.+)(@)(.*)/,logArguments)
)
如果replaceValue是一个函数的话那么,这个函数的arguments会有n+3个参数(n为正则匹配到的次数),参数为:
- 匹配到的字符串
- 如果正则使用了分组匹配就为多个否则无此参数。
- 匹配字符串的对应索引位置
- 原始字符串