正则表达式 --常见面试题

手机号脱敏

类如 13300001111 改为 133****1111

思路

正则表达式 可以用 () 匹配分组,分组按匹配结果按序号排列,分组1 、分组2 。可以使用$1 、$2 引用刚才匹配到的分组

var tel="13300001111";
var pt=/^(\d{3})\d{4}(\d{4})$/;
tel.replace(pt,"$1****$2");

将 “ab-cd-ef” 转换为驼峰式的"abCdEf"

str.replace(pattern,args) ,replace()的第二个参数,不仅可以使一个字符串,也可以是一个函数,参数是匹配到的每一项

var str="ab-cd-ef";
var pt=/-[a-z]/g; // 匹配 -e -f
str=str.replace(pt,function(item){
     
    console.log(item); // 分别是 -e  , -f
    return item.substr(1).toUpperCase();
})
console.log(str);

匹配一年的12个月

   var pt=/^(0?[1-9]|1[0|1|2])$/;
   pt.test(01);//true
   pt.test(1);// true
   pt.test(12); //true
   pt.test(13);// false   
   

匹配HTML标签

   // 匹配 标签 
        var aaaa='' 
        var apt=/^]{1,}>$/g
        apt.test(aaaa)
        console.log(aaa.match(apt)); 

获取域名

有URL地址如下:http://www.baiddd.com?name=123
获取域名 www.baiddd.com

 var url="http://www.baiddd.com?name=123";
 var pt=/\/\/([a-z0-9.]{1,})?/;
 var res=url.match(pt);
 if(res){
     
    console.log(res[1]); // 拿到匹配的结果了
 } 

获取URL中的参数值

有URL如下:http://www.baidu.com?name=liming&name2=jack;
现需要获取 参数name对应的值

  var url="http://www.baidu.com?name=liming&name2=jack";
  var pt=/[?|&]\w{1,}=(\w{1,})[&|^]/;
  var res=url.match(pt);
  console.log(res);


  function getParams(url,key){
     
     var pt=new RegExp(key+"=([a-z0-9_]{1,})[&|^]");     
     var result=url.match(pt);
     console.log(result,7777);
  }
  getParams(urlParams,"name");

你可能感兴趣的:(实践)