阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 正则总结

      正则总结

      • exec

          var reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;//是否为有效数字的正则,多位数,第一位不能为0;
          var str1 = "1255552.3",
              str2="2345",
              str3="0";
          var ary = [];
          var res = reg.exec(str1);
          console.log(reg.test(str1),reg.test(str2),reg.test(str3));
          console.log("exec str1",reg.exec(str1));//["1255552.3", "1255552", "1255552", ".3", index: 0, input: "1255552.3"]
          console.log("exec str2",reg.exec(str2));//["2345", "2345", "2345", undefined, index: 0, input: "2345"]
          console.log("exec str3",reg.exec(str3));//["0", "0", undefined, undefined, index: 0, input: "0"]
        
      • ** match **

        var reg = /^[+-]?(\d|([1-9]\d+))(.\d+)?$/;//是否为有效数字的正则,多位数,第一位不能为0; var str1 = “1255552.3”, str2=“2345”, str3=“0”; ary = str1.match(reg); console.log(ary);//[“1255552.3”, “1255552”, “1255552”, “.3”, index: 0, input: “1255552.3”]

      • ** replace *

      replace:字符串替换

      第一个参数是一个正则:把正则所匹配的内容都替换掉

      • 先把大正则匹配的内容捕获到(捕获到的结果个我们用exec捕获到的结果基本一致)

      • 把我们捕获的内容进行替换

          var str = "20151215";
          var reg = /\d/g;
          var ary = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
          //一共要捕获8次,我们的第二个参数[function]要执行8次
          //每一执行都把当前正则捕获的内容传递给我们的[function]
          //每一次执行的返回值(写在return后面的)都相当于把当前大正则捕获的内容替换成我们返回的内容
          str = str.replace(reg, function () {
              //第一次捕获2 ->"贰" ary[2]
              //第二次捕获0 ->"零" ary[0]
              //arguments[0]->每一次执行函数我们正则捕获到的内容
              console.log(arguments);
              //第一次:arguments->["2", 0, "20151215"]  arguments[0]->"2"
              return ary[arguments[0]];//->return ary["2"] ->return "贰";
          });
          console.log(str);//贰零壹伍壹贰壹伍
        
      • 模板引擎实现的原理

          var str = "my name is {0},my age is {1},i can write {2},so ~~";
          var ary = ["zhu", "18", "JavaScript"];
          //->"my name is zhu,my age is 18,i can write JavaScript,so~~";
          str = str.replace(/{(\d)}/g, function () {
              //每一次执行function
              //arguments[0] ->当前大正则捕获的内容 {0}
              //arguments[1] ->当前第一个小分组捕获的内容 0
              //return value; ->用value把大正则捕获的内容替换 {0}被value替换了
              console.log(arguments);
              return ary[arguments[1]];
          });
          console.log(str);
        
      • 1、获取一个字符串中出现次数最多的字符?

          var str = "zhuanbangzhuzhu";
        
      • 2、千分符

          var str = "5634780";//->"5 634 780"
        
      • 3、获取地址栏中的问号传递进来的参数

          URL:https://passport.baidu.com/v2/?reg=200&tt=300&gid=100
          目标数据:{reg:200,tt:300,gid:100}
        
      • 4、格式化时间

          var str="2015-12-14 13:8:5"; ->"2015年12月14日 13时08分05秒"
        
      目录
      本文目录
      目录