zoukankan      html  css  js  c++  java
  • 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"]

  • 相关阅读:
    敏捷不是XP(口水文)
    利用异或的特性解决,找出重复数的问题,应该是目前最优算法。
    开源和免费那些事儿(二)
    开源和免费那些事儿
    LINQ本质 外篇 JOIN补遗
    在北京求.NET开发职位,人已经到达北京
    软件是邪恶的
    最近遇到的两个面试题兼卖身广告
    谈谈信仰和银弹。
    继续高阶函数好玩有用的扩展(网吧行文)
  • 原文地址:https://www.cnblogs.com/z-dl/p/8984524.html
Copyright © 2011-2022 走看看