zoukankan      html  css  js  c++  java
  • (十)前端-正则

    10.正则

    //解析 URL Params 为对象
     var str = 'http://www.zhufengpeixun.cn/?lx=1&from=wx&b=12&c=13#qqqq';
    function getParam(url){
      var reg = /([^?=&]+)=([^?=&#]+)/g;
      let obj = {};
      url.match(reg).forEach(item=>{
        let a = item.split('='); // ['lx','1']
        obj[a[0]] = a[1]
      })
      return obj
    }
    getParam(str);
    //=================================================
     
    //模板引擎实现
    let template = '我是{{name}},年龄{{age}},性别{{sex}}';
    let data = {
      name: '姓名',
      age: 18
    }
    render(template, data); // 我是姓名,年龄18,性别undefined
     
    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; // 如果模板没有模板字符串直接返回
    }
    //=================================================
     
    // 出现次数最多的字符
     var str = 'sfgsdfgsertdgfsdfgsertwegdsfgertewgsdfgsdg';
    function getMax2(str) {
      str = str.split('').sort().join('');// 把字符串进行排序
      let key = '',num = 0;
      str.replace(/(w)1*/g,function($0,$1){
        if($0.length > num){
          num = $0.length;
          key = $1;
        }
      })
      return{
        key,num
      }
    }
    getMax2(str);
    //=================================================
     
    // 千分符的实现
    // 100,000,00
    //方法1
    var str = '1234567'; // 1,234,567
    function moneyFormate(str){
      str = str.split('').reverse().join('')
      let s = '';
      for(let i = 0; i < str.length ; i++){
        i%3 == 2 ? s+=str[i]+',' : s+=str[i]
      }
      s = s.split('').reverse().join('')
      return s
    }
    moneyFormate(str);// 1,234,567
     
     
     
     
     
    // 方法2
    var str = '1234567';
    function moneyFormate2(str){
      let s = '';
      // s = str.replace(/d{1,3}(?=(d{3})+$)/g,function(a){
      //     console.log(arguments)
      //     return a + ','
      // })
      s = str.replace(/(d{1,3})(?=(d{3})+$)/g,'$1,');
      return s;
    }
    moneyFormate2(str);
    //=================================================
     
     
    var str = '   sdfgsg   fsgfsd    ';
    // 使用正则去除字符串的首尾空格
    // 以 1 到 多个 空格开头或者结尾的 都替换成空;
    var res = str.replace(/^ +| +$/g,'')
    
    
  • 相关阅读:
    gc buffer busy/gcs log flush sync与log file sync
    给Oracle年轻的初学者的几点建议
    Android 编程下帧动画在 Activity 启动时自动运行的几种方式
    Android 编程下 Touch 事件的分发和消费机制
    Java 编程下 static 关键字
    Java 编程下 final 关键字
    Android 编程下模拟 HOME 键效果
    Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
    Extjs4 大型项目目录结构重构
    [转]SQLServer 2008 允许远程连接的配置方法
  • 原文地址:https://www.cnblogs.com/HelloBytes/p/14177969.html
Copyright © 2011-2022 走看看