var reg = /zhu(\d+)/g; var str = "zhu1234zhu3456zhu5678"; //我们用exec执行三次,每一次不仅仅把大正则匹配的获取到,而且还可以获取第一个分组匹配的内容 // console.log(reg.exec(str));//->["zhu1234", "1234"...] // console.log(reg.exec(str));//->["zhu3456", "3456"...] // console.log(reg.exec(str));//->["zhu5678", "5678"...] //而match只能捕获大正则匹配的内容 //console.log(str.match(reg));//->["zhu1234", "zhu3456", "zhu5678"]
var str = "zhu2015zhu2016"; str = str.replace(/\d+/g, function () { console.log(arguments[0],"arguments[0]");//每一次执行匿名函数把我们大正则捕获的内容获取到 return arguments[0];//我返回的1把每一次大正则匹配捕获的内容都替换了 返回的时候替换 并且拼接在一起 大小正则这个正则一模一样 }); console.log(str);//->"zhu1zhu1" //RegExp.$1 ->获取第一个分组捕获的内容 和arguments 是一样的效果
比如某一个正则是/zhu(\d+)/g
大正则就是我们的zhu(\d+) 也就是arguments[0]
小正则就是(\d+)arguments[1] 或者是RegExp.$1