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()); }
  • 相关阅读:
    jeecms 强大的采集功能优化 转载 https://blog.csdn.net/jeff06143132/article/details/7099003
    JEECMS自定义标签开发步骤
    jeecms之全文检索
    jeecms怎么修改后台访问路径?
    jeecms 基本架构研究
    Java JNI初探
    《高效程序员的45个习惯》
    Java并发编程:Thread类的使用
    Thread详解
    JAVA多线程实现的四种方式
  • 原文地址:https://www.cnblogs.com/yzhihao/p/11510128.html
Copyright © 2011-2022 走看看