zoukankan      html  css  js  c++  java
  • js的replace函数入参为function时的疑问

      近期在写js导出excel文件时运用到replace方法,此处详细的记录下它各个参数所代表的的意义。

    定义和用法

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

    语法

    stringObject.replace(regexp/substr,replacement)

    返回值

    一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。返回值

       这里的 replacement 可以是函数而不是字符串,就是我们所说的 replace 的入参 function 。

    举个栗子

    匹配字符串 "abcdefg" :

    'abcdefg'.replace(/a(...).(.)/g,function(a,b,c,d,e,f){
        console.log(a,b,c,d,e,f)
    })

    // 输出 abcdef bcd f
    0 abcdefg undefined "undefinedg"

    说明:

    /a(...).(.)/g  : 最前面的 "/" 与最后面的 "/" 是分隔符,表示正则表达式的开始与结束
           g : 表示正则表达式使用的global(全局)的状态.使用 global 标志表明在被查找的字符串中搜索操作将查找所有符合的项,而不仅仅是第一个.这也被称为全局匹配.
              【相关的标志还有i(ignoreCase,表示忽略大小写)、m(multiline,表示允许跨行)】
    (...) 正则中的小括号,是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
    . 表示任意字符,括号里的三个...表示匹配三个任意字符。      

     function中参数说明:

      a:第一个参数,为正则所匹配到的内容,此处为 abcdef

        

      b、c : 第二个及以后的为 正则表达式中分组的内容,因为有两个 () 所以有两个分组,分别为b,c保存。
      d      : 匹配成功时所在的位置。

      e      : 整个字符串,此处为 abcdefg     

           f       : 然后就没有了(所以f是 undefined )

    为啥最后输出还有个“undefinedg”,没查明白,欢迎盆友们查到了告诉我一下哈~

    再粘个栗子体会下:

  • 相关阅读:
    Mac 键盘快捷键
    行业分析
    大数据导航
    SQL循环语句 详解
    SQL中使用循环结构
    常用 git 基础命令
    最近众包-有意思
    薪酬体系设计
    海氏评估法
    原则类
  • 原文地址:https://www.cnblogs.com/zhangym118/p/6235998.html
Copyright © 2011-2022 走看看