Skip to content

Latest commit

 

History

History
84 lines (61 loc) · 3.13 KB

7.正则总结.md

File metadata and controls

84 lines (61 loc) · 3.13 KB

正则总结

  • 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秒"