【JS学习笔记】replace() 的用法,例如第二个参数为function函数时

1,replace() 方法的第二个参数 replacement 可以是函数而不是字符串。

在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。

 

function(a,b,c,d)

该函数的第一个参数是匹配模式的字符串,第二个参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数第三个参数是一个整数,声明了匹配在 stringObject 中出现的位置,最后一个参数是 stringObject 本身。

JavaScript语言精粹中,第4 章函数一节,模块小节中提供了:

String.method("deentityify",function(){
    var entity={
        quot:'"',
        lt:'<',
        gt:'>'
    };
    return function(){
        return this.replace(/&([^&;]+);/g,function(a,b,c,d){
            //console.log(a,b,c,d)
           var r=entity[b];
            return typeof  r === 'string' ? r : a;
        }
      );
    };
}());

document.writeln('&lt;&quot;&gt;'.deentityify( ));

博主跑了该函数,发现无法输出。

将String添加新方法的部分改为了原型添加:

String.prototype.deentityify=function() { }();可以正常输出。

观察console.log(a,b,c,d)

可以看到第一次:a为匹配到的字符串,b为对应替换的字符串,c为替换的位置,d为整个要替换的字符串。

因为有三次符合条件,所以调用了三次函数。

2,replace()方法的第二个参数可以为“$”,$有特殊含义。

 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

字符替换文本
$1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$&与 regexp 相匹配的子串。
$`位于匹配子串左侧的文本。
$'位于匹配子串右侧的文本。
$$直接量符号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值