js-str的replace函数参数

之前一直理解的字符串的匹配参数是从左括号一次传递,最后俩分别是匹配到的字符开始的位置,和整个的字符串。。。

其具体参数是什么,括号中没有匹配到的是否传参???

看了underscore模版引擎写法,有个想法是

只要有括号就会传参数,如果正则中匹配整体,但是该括号中的可选没匹配到的话,应该是undefined,

测试结果验证想法正确。

1 var regs = /(dd)|(fe)/g;
2 'denddennnenfeen'.replace(regs, function(){
3     console.log(arguments)
4 })

{ '0': 'dd',

  '1': 'dd',

  '2': undefined,

  '3': 3,

  '4': 'denddennnenfeen' }

{ '0': 'fe',

  '1': undefined,

  '2': 'fe',

  '3': 11,

  '4': 'denddennnenfeen' }

从运行结果可以看出,这个参数对象分别给出的所有匹配,其实每一个括号的值都传递进来了。如果该匹配项不包含的括号,则该括号项为空

原文地址:https://www.cnblogs.com/jingwensophie/p/4742183.html