JavaScript replace()的使用和里面function()的说明

stringObject.replace(regexp/substr,replacement)   可以参考

第一个参数:可以是RegExp对象或是字符串,如果是字符串那么直接匹配字符串

第二个参数:是替换的文本或是返回替换文本的函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //1.第一个参数直接用字符串匹配 第二个参数为文本
        var str1 = 'GoodGoodStudy';
        var result1 = str1.replace('Good','cctv');
        console.log('result1======' + result1);//result1======cctvGoodStudy

        //2.第一个参数直接用字符串匹配 第二个参数为返回替换文本的函数
        var str2 = 'GoodGoodStudy';
        var result2 = str2.replace('Good',function(str,key) {
            return 'cctv';
        });
        console.log('result2======' + result2);//result2======cctvGoodStudy

        //3.第一个参数用RegExp 第二个参数为文本
        var str3 = 'GoodGoodStudy';
        var result3 = str3.replace(/Good/g,'cctv');
        console.log('result3======' + result3);//result3======cctvcctvStudy

        //4.第一个参数用RegExp 第二个参数为返回文本的函数
        var str4 = 'i have 98 you have 66';
        var fun = function(template,data) {
            return template.replace(/(\d)+/g,function(str,group,firstIndex,template) {
                var v = data[str];
                return v;
            });
        };
        var result4 = fun(str4,{98: '第一个',66: '第二个'});
        console.log('result4======' + result4);//result4======i have 第一个 you have 第二个
        //那么function(str,group,firstIndex,template)四个参数是什么意思?
        //如果正则表达式中有分组(即有括号)那么有四个参数,第一个是匹配到的字符串,第二个是匹配到的最后一个分组
        //第三个是匹配到的字符串第一个位置的索引,第四个是被匹配的字符串
        //如果没有分组,那么只有三个参数,没有了分组这个参数。

        //5.路径中参数替换。这是一个api路径中的{xxx}占位符替换成参数的方法。
        var str = 'http://127.0.0.1/myapi/{personCode}/{followType}/find';
        var nano = function (template, data) { //该方法摘自项目:)
            return template.replace(/\{([\w\.]*)\}/g, function (str, key) {
                var keys = key.split(".");
                var v = data[keys.shift()];
                for (var i = 0, l = keys.length; i < l; i++) {
                    v = v[keys[i]];
                }
                return (typeof v !== "undefined" && v !== null) ? v : "";
            });
        };
        var strNew = nano(str,{personCode: '1654321',followType: 'C'});
        console.log('strNew===' + strNew);//strNew===http://127.0.0.1/myapi/1654321/C/find
        //上面的正则多匹配了\. 并且在funtion里面进行了处理,目的是可能会出现这样的{person.code}的占位,
        //那么传入的参数为{person:{code:1654321},followType: 'C'}
    </script>
</head>
<body></body>
</html>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值