美文网首页
JS replace正则匹配经典案例

JS replace正则匹配经典案例

作者: lwz4070 | 来源:发表于2018-08-13 16:21 被阅读0次
    • 实现字符串的trim函数,去除字符串两边的空格
     String.prototype.trim = function(){
     
      //方式一:将匹配到的每一个结果都用""替换
      return this.replace(/(^\s+)|(\s+$)/g,function(){
        return "";
      });
     
      //方式二:和方式一的原理相同
      return this.replace(/(^\s+)|(\s+$)/g,'');
    };
    

    ^s+ 表示以空格开头的连续空白字符,s+$ 表示以空格结尾的连续空白字符,加上() 就是将匹配到的结果提取出来,由于是 | 的关系,因此这个表达式最多会match到两个结果集,然后执行两次替换。

    • 提取浏览器url中的参数名和参数值,生成一个key/value的对象
    function getUrlParamObj(){
      var obj = {};
      //获取url的参数部分
      var params = window.location.search.substr(1);
      //[^&=]+ 表示不含&或=的连续字符,加上()就是提取对应字符串
      params.replace(/([^&=]+)=([^&=]*)/gi,function(rs,$1,$2){
        obj[$1] = $2;
      });
     
      return obj;
    }
    

    /([&=]+)=([&=]*)/gi 每次匹配到的都是一个完整key/value,形如 xxxx=xxx, 每当匹配到一个这样的结果时就执行回调,并传递匹配到的key和value,对应到1和2

    • 将手机号12988886666转化成129 8888 6666
    function telFormat(tel){
     
      tel = String(tel);
     
      //方式一
      return tel.replace(/(\d{3})(\d{4})(\d{4})/,function (rs,$1,$2,$3){
        return $1+" "+$2+" "+$3
      });
     
      //方式二
      return tel.replace(/(\d{3})(\d{4})(\d{4})/,"$1 $2 $3");
    }
    

    (\d{3}\d{4}\d{4}) 可以匹配完整的手机号,并分别提取前3位、4-7位和8-11位,"12 $3" 是在三个结果集中间加空格组成新的字符串,然后替换完整的手机号。

    相关文章

      网友评论

          本文标题:JS replace正则匹配经典案例

          本文链接:https://www.haomeiwen.com/subject/xgdubftx.html