42.分组捕获

正则分组:

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

转载于:https://www.cnblogs.com/z-dl/p/8984524.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值