之前一直理解的字符串的匹配参数是从左括号一次传递,最后俩分别是匹配到的字符开始的位置,和整个的字符串。。。
其具体参数是什么,括号中没有匹配到的是否传参???
看了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' }
从运行结果可以看出,这个参数对象分别给出的所有匹配,其实每一个括号的值都传递进来了。如果该匹配项不包含的括号,则该括号项为空