按照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);
});

结果 

最新文章

  1. Hacker Rank: Two Strings - thinking in C# 15+ ways
  2. VB常用字符串操作函数
  3. C# 利用socekt做到http监听,怎么样才能做到高性能
  4. postgresql流复制配置
  5. C#虚方法
  6. jQuery radio change事件 checkbox选中事件
  7. JS Resizable Panel 练习
  8. HDU 5794:A Simple Chess(Lucas + DP)
  9. Winfrom子窗体刷新父窗体
  10. Nginx、LVS及HAProxy负载均衡软件的优缺点详解
  11. 2D image convolution
  12. 桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面
  13. javacc
  14. SQL点滴21—几个有点偏的语句
  15. Web层框架对网站中所有异常的统一解决
  16. 447. Number of Boomerangs
  17. QuickStart系列:docker部署之Elasticsearch
  18. Python面试笔记一
  19. Jquery+H5验证数据(不是表单验证啊 )
  20. Vue2+VueRouter2+webpack 构建项目实战(一):准备工作

热门文章

  1. android六大框架
  2. python中文编码
  3. MAC PRO 的网关在哪里
  4. Cauchy 级数浓缩判别法
  5. 给mysql的root用户
  6. C.C++把整个文件内容读进一个buffer中
  7. template学习一函数模板
  8. Ubuntu下设置(增加/删除)开机启动项
  9. Object-C中动态类型对象相关操作汇总
  10. 使用ASP.NET MVC操作过滤器记录日志(转)