美文网首页
JS正则表达式中的分组捕获和分组引用

JS正则表达式中的分组捕获和分组引用

作者: 金刚狼_3e31 | 来源:发表于2020-11-20 11:02 被阅读0次
// 身份证号码
let str = '36252819950508056X'; 
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(?:\d|X)$/;

console.log(reg.exec(str));
console.log(str.match(reg));
// 以上两个打印都是一样
// ["36252819950508056X", "362528", "1995", "05", "08", "6", index: 0, input: "36252819950508056X", groups: undefined]
// 第一项:大正则匹配的结果
// 其余项:每一个小分组单独匹配捕获的结果
// 如果设置了分组(改变优先级),但是捕获的时候不需要单独捕获,可以给予?:来处理
// 既要捕获到{数字},也想单独的把数字也获取到,例如:第一次找到{0} 还需要单独获取0
let str = '{0}年{1}月{2}日';

// 不设置g只匹配一次,exec和match获取的结果一致(既有大正则匹配的信息,也有小分组匹配的信息)
let reg = /\{(\d+)\}/;
console.log(reg.exec(str));
// ["{0}", "0", index: 0, input: "{0}年{1}月{2}日", groups: undefined]
console.log(str.match(reg));
// ["{0}", "0", index: 0, input: "{0}年{1}月{2}日", groups: undefined]

let reg = /\{(\d+)\}/g;
console.log(str.match(reg));  // ["{0}", "{1}", "{2}"]
// 多次匹配的情况下,match只能把大正则匹配的内容获取到,小分组匹配的信息无法获取
//写个方法实现上面需求
let aryBig = [];
let arySmall = [];
let res = reg.exec(str);

while (res) {
    let [big, small] = res;
    aryBig.push(big);
    arySmall.push(small);
    res = reg.exec(str);
}
console.log(aryBig, arySmall);  // ['{0}', '{1}', '{2}'], ['0', '1', '2']
// 分组的第三个作用:“分组引用”
let str = "book"; // 类似"good"、"look"、"moon"、"foot"...
// 分组引用就是通过'\数字'让其代表和对应分组出现一模一样的内容
let reg = /^[a-zA-Z]([a-zA-Z])\1[a-zA-Z]$/; 
console.log(reg.test('book'));  // true
console.log(reg.test('deep'));  // true
console.log(reg.test('some'));  // false

相关文章

  • JS正则表达式中的分组捕获和分组引用

  • JS正则表达式的骚操作

    参考资料 《JS正则表达式的分组匹配》《正则表达式之捕获组/非捕获组介绍》《正则表达式中(?:pattern)、(...

  • 正则:分组

    正则分组作用: 1、改变优先级:2、分组引用 3、分组捕获:正则在捕获的时候,不仅把大正则匹配的内容捕获到,而且还...

  • 正则表达式

    javascript正则表达式正则表达式30分钟入门教程js的正则表达式的正则前瞻(?=)和非捕获性分组(?:)有...

  • 3.正则中()分组的作用

    上一篇:正则中需要注意的[]细节 正则中()分组的作用 改变默认的优先级 分组 捕获 分组的引用 改变优先级let...

  • Perl学习笔记10——正则表达式(下)

    捕获组与反向引用 在正则表达式中,圆括号的一大作用是进行模式分组,而其还有另一个非常重要的作用,即定义捕获组。捕获...

  • 常用正则表达式

    基本的规则 [exp] 匹配中括号里的内容 (exp)捕获分组 (?:exp)非捕获分组 环视功能 (?=exp)...

  • 后向引用

    后向引用:在后面的表达式中,引用前面某个分组所匹配到的内容 在解释之前需要先了解一下分组编号,在正则表达式中,每个...

  • JavaScript - 正则表达式(二)

    正则表达式(一)传送门 四. 捕获组 作用:分组捕获的内容可以供表达式使用,或者最后输出 一个括号就是一个分组,最...

  • javascript正则表达式----分组捕获

    正则的分组捕获 简单的分组捕获之前在写身份证号正则(不完整)的时候,提到过分组捕获 分组多次捕获假设有这种需求: ...

网友评论

      本文标题:JS正则表达式中的分组捕获和分组引用

      本文链接:https://www.haomeiwen.com/subject/ighdiktx.html