正则表达式常见用法

 手机号码验证

function isPhone(tel){
           var regx = /^1[34578]\d{9}$/;
           return regx.test(tel)
        }

  

身份证验证

function isCardNo(number){ 
            var regx = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
            return regx.test(number); 
        }

 千位分隔符

function parseToMoney(num){
           num = parseFloat(num.toFixed(3));
           let [integer,decimal]  = String.prototype.split.call(num,'.');
           integer = integer.replace(/\d(?=(\d{3})+$)/g,'$&,');
           return integer +  (decimal ? ('.' + decimal) : '');
       }

 

 查找字符串中出现最多的字符和个数

let str='abdhabdfedsaaadebas';
       let num = 0,char='';
       let other = str.split('').sort().join('');
       console.log(other);

       let re = /(\w)\1+/g;
       other.replace(re,($0,$1)=>{
           if(num<$0.length){
               num = $0.length;
               char = $1;
           }
       })
       console.log(`字符串${str}中的字符出现最多的是${char},出现了${num}次`);

 转为驼峰命名

function f(s){
           return s.replace(/-\w/g,function(x){
               return x.slice(1).toUpperCase();
           })
       }

 

 模板引擎实现

function render(template,data){
            const reg = /\{\{(\w+)\}\}/;   //模板字符串正则
            if(reg.test(template)){  //判断模板里是否有模板字符串
                const name = reg.exec(template)[1];  //查找当前模板里第一个模板字符串的字段
                template = template.replace(reg,data[name]);  //将第一个模板字符串渲染
                return render(template,data);  //递归的渲染并返回渲染后的结构
            }
            return template;
        }

 

解析URL  Params为对象

function parseParams(url){
            const paramsStr = /.+\?(.+)$/.exec(url)[1];  //将?后面的字符串取出来
            const paramsArr = paramsStr.split('&');  //将取出来的字符串用&分割后存到数组中
            let paramsObj = {};

            paramsArr.forEach(param=>{
                if(/=/.test(param)){  //处理有value的参数
                    let [key,val] = param.split('=');  //分割key和value
                    val= decodeURIComponent(val);  //解码
                    val= /^\d+$/.test(val) ? parseFloat(val):val;  //判断是否转为数字

                    if(paramsObj.hasOwnProperty(key)){  //如果对象有key,则添加一个值
                        paramsObj[key] = [].concat(paramsObj[key],val);
                    }else { // 如果对象没有这个key,创建key并设置值
                        paramsObj[key] = val;
                    }
                }else{  //处理没有value的参数
                    paramsObj[param] = true;
                }
            })
            return paramsObj;
        }    

 

猜你喜欢

转载自www.cnblogs.com/yuyujuan/p/11458218.html