正则分组:
1.改变优先级
2.分组引用
// 2代表和第二个分组出现一模一样的内容
// 1代表和第一个分组出现一模一样的内容
var reg = /^(w)1(w)2$/;
console.log(reg.test("zzff")) // true
console.log(reg.test("z0f_")) // false
3.分组捕获:正则在捕获的时候不仅仅把大正则匹配的内容捕获到,而且还可以把小分组匹配的内容捕获到
(?:)在分组中?:的意思是只匹配不捕获
var reg = /^(d{2})(d{4})(d{4})(d{2})(d{2})(?:d{2})(d)(?:d|X)$/;
var str = "142726199009181211";
console.log(reg.exec(str)); // ary = ["142726199009181211","14","2726","1990","09","18","12",'1',"1",index:0, input:"142726199009181211"]
ary[0] ->大正则匹配的内容
ary[1] ->第一个分组捕获的内容
ary[2] ->第二个分组捕获的内容
ary[3] ->第三个分组捕获的内容
...
console.log(str.match(reg)); // 和exec获取的结果是一样的
var reg = /zhangsan(d+)/g;
var str = "zhangsan1234zhangsan3456zhangsan5678";
// 我们用exec执行三次,每一次不仅仅把大正则匹配的获取到,而且还可以获取第一个分组匹配的内容
console.log(reg.exec(str)); // ->["zhangsan1234","1234"...]
console.log(reg.exec(str)); // ->["zhangsan3456","3456"...]
console.log(reg.exec(str)); // ->["zhangsan5678","5678"...]
// 而match只能捕获大正则匹配的内容
console.log(str.match(reg)); // ->["zhangsan1234","zhangsan3456","zhangsan5678"]