• home > webfront > ECMAS > javascript >

    JS replace函数正则表达式细讲:获取url参数与重复字母统计

    Author:[email protected] Date:

    JS replace函数谁都会,正则表达式也很多人人会。但是获取url参数与重复字母统计,这个用正则表达式来做会非常简单

    js,replace,一般人都知道!!

    var test1="wo shi choulujun".replace("ch","zh");
    console.log(test1);

    这个谁都会呀?

    但是这个呢?

    b="a b c d".replace(/\w/g,function(){
      console.log(arguments)
      return arguments[0].toUpperCase();
    });
    console.log(b);
    /*一般人我可以告诉他!
    VM55092:3 ["a", 0, "a b c d"]
    VM55092:3 ["b", 2, "a b c d"]
    VM55092:3 ["c", 4, "a b c d"]
    VM55092:3 ["d", 6, "a b c d"]
    VM55092:6 A B C D*/

    于是又了,

    var a="a b c d";
    var i=0;
    var b= a.replace(/\s/g,function(item,index,string){
        return i++;
    });
    console.log(b);

    js replace里面function 函数参数分别是:当前正则匹配对象,函数苏在位置,当前替换对象!

    就只有这点料??

    目黑呀?

    先回顾下:


    字符替换文本
    $1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
    $&与 regexp 相匹配的子串。
    $`  (注:反引号位于匹配子串左侧的文本。
    $'位于匹配子串右侧的文本。
    $$直接量符号。
    var a1="i'm zhoulujun";
    var b1=a1.replace(/zhoulujun/,"{$&}");    
    console.log(b1);// i'm {zhoulujun}
    
    
    var c1= a1.replace(/zhoulujun/,"$' left");
    var c2= a1.replace(/zhoulujun/,"$` right");
    console.log(c1);//VM2740:4 i'm  left
    console.log(c2);//VM2740:5 i'm i'm  right
    
    var a1="i'm zhoulujun.";
    var c1= a1.replace(/zhoulujun/,"$`left");
    
    var c2= a1.replace(/zhoulujun/,"$'right");
    console.log(c1);//VM2745:6 i'm i'm left.
    console.log(c2);//VM2745:7 i'm .right.


    再来看…………

    获取URL参数

    function getQueryObject(url) {
        var obj = {};
        url||(url=window.location.search)
        url.replace(/([^?&=]+)=([^?&=]*)/g, function ($0, $1, $2) {
            console.log($0,$1,$2)
            obj[decodeURIComponent($1)] = String(decodeURIComponent($2));
        });
        return obj;
    }


    我要统计字符串重复出现字母的个数?


    var re="zhoulujun";
    function  countRepeat(str){
        if(!str||typeof str!="string"){
            return false;
        }
    
        var arr=str.split("");
        var tem={},max= 1,maxR;
        for(var i=0;i<arr.length;i++){
            if(!tem[arr[i]]){
                tem[arr[i]]=1;
            }else {
                tem[arr[i]]++;
                if(tem[arr[i]]>max){
                    max++;
                    maxR=arr[i];
                }
            }
    
    
        }
        return {
            maxNum:max,
            maxItem:maxR,
            maxFirstIndex:str.indexOf(maxR)
        }
    
    }


    正则表达式实现

    var str="sssfgtdfssddfsssfssss";
    var num=0;
    var value=null;
    function max(){
        var new_str=str.split("").sort().join("");
        var re=/(\w)\1+/g;                 
        //没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来,\1表示跟前面第一个子项是相同的
        new_str.replace(re,function($0,$1){    
        //$0代表取出来重复的一个个整体,如[s,s...],[f,f..],[d,d....]  $1代表这个整体里的字符
            if(num<$0.length){
                num=$0.length;
                value=$1
            }
        });
        alert(value+":"+num)
    };
    max(str);




    转载本站文章《JS replace函数正则表达式细讲:获取url参数与重复字母统计》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/js/2016_0323_7726.html