replace的高级运用

除了我们经常使用的replace()形式

stringObject.replace(regexp/substr,replacement)

replace方法的第二个参数也可以是一个函数,形如:

stringObject.replace(regexp/substr,function(){});

这个函数应该有个return值,表示应该被替换的匹配项。

下面会根据正则的匹配项和捕获组,分2种情况,总结第二个参数function的具体用法。

情况1.当只有一个匹配项的(即与模式匹配的字符串)情况下,会向该函数传递三个参数:模式的匹配项,模式匹配项在字符串中的位置和原始字符串,形如:

stringObject.replace(
    regexp/substr,
    function(match,pos,originalText){}
);

下面是实例demo:

var str = "{a},{b}";
str.replace(/\{\w+\}/g,function(match,pos,original){
    console.log(match);
    console.log(pos);
    console.log(original)
})

输出结果是:
{a}
0
{a},{b}
{b}
4
{a},{b}

情况2.在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项,第一个捕获组的匹配项,第二个捕获组的匹配项……,但是,最后两个参数依然是模式的匹配项在字符串中的位置和原始字符串。

下面是根据上面的demo进行稍加修改,

var str = "{a},{b}";
str.replace(/\{(\w+)\}/g,function(match,capture,pos,original){
    console.log(match);
    console.log(capture);
    console.log(pos);
    console.log(original)
})

输出结果是:
{a}
a
0
{a},{b}
{b}
b
4
{a},{b}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值