zoukankan      html  css  js  c++  java
  • 正则表达式中 的$1,$2与实际应用

      $1,$2表达的是小括号分组里面的内容:$1是第一个小括号里的内容,$2是第二个小括号里面的内容,依此类推。

      比如(\d{4})(\d{2})(\d{2})  匹配"20190919"$1是第一个括号里匹配的2019$2是第二个括号里匹配的09$3是第三个括号里匹配的19。

      然后可以利用实现一个简单的时间格式化函数

    // 日期转换:yyyymmdd -> yyyy-mm-dd,type=true时,yyyy-mm-dd -> yyyymmdd
    dateFormate (date, type) {
      if (date) {
        return type ? date.replace(/-/g, '') : date.replace(/^(d{4})(d{2})(d{2})$/, '$1-$2-$3')
      }
    },

      "20112233".replace(/^(d{4})(d{2})(d{2})$/, "$1-$2-$3")

      "20112233".replace(/(d{4})(d{2})(d{2})/, "$1-$2-$3")

       str.replace(reg,function(){}) 应用的地方很多啊,最基本的就是比如 str 是一串数字,比如你要把这些数字替换成大写的汉字

    var ary=["","","","","",""]
    "123456".replace(/d/g,function(i){
        return ary[i - 1];
    })

      还有一种用法就是 不替换 字符串,只是利用 replace 可以匹配几次,这个 function 就执行几次的特性来做一些事情,比如格式化时间字符串等等。

      $1--$9 是RegExp 自带的,只要放生了匹配就会有。 test exec str的replace 都会有。代表的是 分组,即小括号里面的小正则 捕获到的内容。

      /^(d{4})[/-](d{1,2})[/-](d{1,2})$/,比如这个 简单的匹配 年月日的正则,我们就可以通过 $1 $2 $3 获取到并进行处理。

    var reg=new RegExp("(http://www.qidian.com/BookReader/)(\d+),(\d+).aspx","gmi");
    var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";
    
    var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
    
    你可能注意到了,在reg正则表达式里的几对"()",比如`("(http://www.qidian.com/BookReader/)` ,`(\d+)`,
    $n就指的是匹配到的第n个括号里的内容,
    $n主要是用在后面的程序需要引用前面的正则匹配到的内容时。
    在这个例子里:
    $1 : http://www.qidian.com/BookReader/ $2 : 1017141 $3 : 20361055

      你看到上面的replace实际上是用冒号后面的内容替换冒号前面的“$n”,而冒号后面的内容实际上就是正则里的“()”分组正则表达式在url里匹配到的内容

  • 相关阅读:
    vue脚手架项目配置后端接口(mock数据)
    list添加删除动画(transition-group)
    fast mock官网mock数据
    vuex日志插件(createLogger)
    环形进度条
    程序员的周末生活
    hbase错误之Region in transition异常解决
    不同虚拟机之间的文件传递
    windows上链接虚拟机
    hadoop——yarn
  • 原文地址:https://www.cnblogs.com/goloving/p/13138373.html
Copyright © 2011-2022 走看看