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

    一、repalce定义

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

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

      

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

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

      

    三,第二个参数是函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    把字符串中所有单词的首字母都转换为大写:
    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]
    })

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

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

    实现:

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

    说明:

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

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

        

    五、其他常用正则替换

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    //去除空格
    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()); }
  • 相关阅读:
    finder的隐藏文件&IOS虚拟机地址
    IOS的UI总结
    ios系统的中arm指令集
    mac下删除svn账号
    PNG图片压缩工具
    让finder显示路径
    Serilog高级玩法之用Serilog记录所选终结点附加属性
    如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出
    关于C#异步编程你应该了解的几点建议
    C#异步编程入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/yzhihao/p/11510128.html
Copyright © 2011-2022 走看看