正则表达式 分组捕获

🌙
手机阅读
本文目录结构

正则分组:

  • 1、改变优先级
  • 2、分组引用

\2 代表和第二个分组出现一模一样的内容;\1 和第一个分组出现一模一样的内容;

一模一样:和对应的分组中的内容的值都要一样

var reg = /^(\w)\1(\w)\2$/;
console.log(reg.test("zzhh"));//->true,zz 相同,hh 相同
console.log(reg.test("zzh_"));//->false,zz 相同,h_不相同
console.log(reg.exec("zzhh"));//->["zzhh", "z", "h", index: 0, input: "zzhh"]
console.log(reg.exec("0011"));//->["0011", "0", "1", index: 0, input: "0011"]
  • 3、分组捕获 ->正则在捕获的时候,不仅仅把大正则匹配的内容捕获到,而且还可以把小分组匹配的内容捕获到
    • (?:) 在分组中?: 的意思是只匹配不捕获
var reg = /^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X|x)$/;
var str = "34222419900428123x";
var ary=reg.exec(str);//["34222419900428123X", "34", "2224", "1990", "04", "28", "3", index: 0, input: "34222419900428123X"]
console.log(ary);
//ary[0] -> 大正则匹配的内容
//ary[1] ->第一个分组捕获的内容
//ary[2] ->第二个分组捕获的内容
//...
console.log(str.match(reg));//->和 exec 获取的结果是一样的

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"]

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了