zoukankan      html  css  js  c++  java
  • 字符串正则替换replace第二个参数是函数

    zepto中

    //将字符串转成驼峰式的格式
    camelize = function (str) {
      return str.replace(/-+(.)?/g, function (match, chr) {
        return chr ? chr.toUpperCase() : ''
      })
    }

     

    按照JS高程的说法,如下

      replace()方法的第二个参数也可以是一个函数。在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项......,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。

      高程的这种描述是有问题的,根据高程理解,若函数参数只有2个参数,那这两个参数应分别是模式的匹配项在字符串中的位置和原始字符串。其实,这这两个参数还是模式的匹配项、第一个捕获组的匹配项。内部实现应该是用了arguments[0]、arguments[1]。下面这2段代码可以进行理解。

     

    var toUrl = 'user/add?id=$18&t=update'.replace(/$(d+)/g, function (a, b) {
                console.log(a);
                console.log(b);
            });

        结果

      

    复制代码
    var toUrl = 'user/add?id=$18&t=update'.replace(/$(d+)/g, function (a, b, c, d) {
                console.log(a);
                console.log(b);
                console.log(c);
                console.log(d);
            });
    复制代码

    结果 

  • 相关阅读:
    婚姻中媒人存在的客观逻辑——leo鉴书45
    为什么要使用RTP
    OCP-1Z0-053-200题-148题-485
    OCP-1Z0-053-200题-149题-78
    OCP-1Z0-053-200题-150题-236
    OCP-1Z0-053-200题-151题-53
    OCP-1Z0-053-200题-152题-56
    OCP-1Z0-053-200题-153题-211
    OCP-1Z0-053-200题-154题-208
    OCP-1Z0-053-200题-155题-218
  • 原文地址:https://www.cnblogs.com/ckAng/p/10517431.html
Copyright © 2011-2022 走看看