一、身份证的分组捕获
let str = "341621199809091718";
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|x)$/
console.log(reg.exec(str))
// ["341621199809091718", "341621", "1998", "09", "09", "1", "8",
//index: 0, input: "341621199809091718", groups: undefined]
console.log(str.match(reg))
// ["341621199809091718", "341621", "1998", "09", "09", "1", "8",
// index: 0, input: "341621199809091718", groups: undefined]
// 1、第一项:大正则的匹配的结果;
// 2、其余项:每个小分组单独匹配捕获的结果;
// 3、如果我们由于优先级的问题使用了分组,但是我们又不想分组被捕获的话,可以
// 使用 ?: 来处理;
// 分组的第三个作用:分组引用
let str = "book"; // "good" ""look;
let reg = /^[a-zA-Z][a-zA-Z]\1[a-zA-Z]$/
// 分组引用就是通过 "\数字" 让其代表和对应分组出现一模一样到的内容;
// [a-zA-Z]\1 的意思是就是出现两个一模一样到的字母;