js replace进阶之正则和回调函数

常用用法:

  1. 字符串替换为字符串 str.replace(String, String);
  2. 正则替换为字符串 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为正则匹配到的次数),参数为:

  1. 匹配到的字符串
  2. 如果正则使用了分组匹配就为多个否则无此参数。
  3. 匹配字符串的对应索引位置
  4. 原始字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值