zoukankan      html  css  js  c++  java
  • 正则替换replace中$1的用法以及常用正则

    一、repalce定义

    用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    stringObject.replace(regexp/substr,replacement);
    
    参数一:必需,规定的字符串或者正则表达式
    参数二:必需,一个字符串值。规定了替换文本或生成替换文本的函数。
    !!!replacement 中的 $ 字符具有特定的含义。详情见W3C
    

      

    二、有$1,$2...的例子

    //把 "Doe, John" 转换为 "John Doe" 的形式:
    var str = "Doe, John";
    str.replace(/(w+)s*, s*(w+)/, "$2 $1");
    
    说明:$1,$2上就是按顺序对应小括号里面的小正则 捕获到的内容。   
    

      

    三,第二个参数是函数

    把字符串中所有单词的首字母都转换为大写:
    var str = 'aaa bbb ccc';
    uw=str.replace(/w+/g, function(word){
      return word.substring(0,1).toUpperCase()+word.substring(1);}
      );
    说明:匹配一次就执行一次函数,匹配的内容作为参数
    
    //把数字转成对应的汉子
    var ary=["一","二","三","四","五","六"]
    "123456".replace(/d/g,function(val){
      return ary[val-1]
    })
    

    四、一个栗子,实现模板字符替换

    var obj = {
    	name:'leaf',
    	age:20
    }
    var str = "我是{{name}},name是我的名字,我今年{{age}}岁";
    //最终替换成"我是leaf,name是我的名字,我今年20岁"

    实现:

    function render(template, context) {
      return template.replace(/{{(.*?)}}/g, (match, key) => context[key.trim()]);
    }

    说明:

      1、.*? 非贪婪匹配模式

           2、每个匹配的这则组合执行一次函数

        

    五、其他常用正则替换

    //去除空格 
    String.prototype.Trim = function() { 
    return this.replace(/s+/g, ""); 
    } 
     
    //去除换行 
    function ClearBr(key) { 
    key = key.replace(/</?.+?>/g,""); 
    key = key.replace(/[
    ]/g, ""); 
    return key; 
    } 
     
    //去除左侧空格 
    function LTrim(str) { 
    return str.replace(/^s*/g,""); 
    } 
     
    //去右空格 
    function RTrim(str) { 
    return str.replace(/s*$/g,""); 
    } 
     
    //去掉字符串两端的空格 
    function trim(str) { 
    return str.replace(/(^s*)|(s*$)/g, ""); 
    } 
     
    //去除字符串中间空格 
    function CTim(str) { 
    return str.replace(/s/g,''); 
    } 
     
    //是否为由数字组成的字符串 
    function is_digitals(str) { 
    var reg=/^[0-9]*$/; //匹配整数 
    return reg.test(str); 
    }
    //单词首字母大写
    function uppperCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); }

      

    六、其他

     正则匹配url:

     /^https?://(([a-zA-Z0-9_-])+(.)?)*(:d+)?(/((.)?(?)?=?&?[a-zA-Z0-9_-](?)?)*)*$/i

       或者:

       (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

  • 相关阅读:
    iscsi一致性的测试验证方法
    ceph各个版本之间参数变化分析
    rgw的rgw_thread_pool_size配置调整
    rgw前端替换civetweb为beast
    配置内网访问的TV
    关于vm.min_free_kbytes的合理设置推测
    rbd的删除回收站功能
    python爬取微博热门话题榜
    Selenium+Pytest自动化测试框架—禅道实战
    python带参数装饰器的两种写法
  • 原文地址:https://www.cnblogs.com/leaf930814/p/7825288.html
Copyright © 2011-2022 走看看