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”,没查明白,欢迎盆友们查到了告诉我一下哈~

    再粘个栗子体会下:

  • 相关阅读:
    B-Tree和B+Tree的区别
    b树和hash树的应用场景
    比较顺序表和链表的优缺点,说说它们分别在什么场景下使用?
    5V与3.3V电平互转
    100M双绞线接头的标准接法
    解决openwrt中文界面异常
    刚刚开通了博客
    openwrt挂载摄像头及视频保存
    mwan3多wan叠加成功
    贝尔金(Belkin)7231-4P tftp救砖
  • 原文地址:https://www.cnblogs.com/zhangym118/p/6235998.html
Copyright © 2011-2022 走看看