美文网首页
正则:分组

正则:分组

作者: gaoqizhuhui | 来源:发表于2017-07-29 10:37 被阅读0次

    正则分组作用:

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

    var reg= /^(\w)\1(\w)\2$/;  //-->\2代表和第二个分组出现一模一样(值都要一样)的内容;\1代表和第一个分组出现一模一样的内容
    console.log(reg.test("hhaa"));   //--->true
    console.log(reg.test("h1a_"));  //---->false
    

    3、分组捕获:
    正则在捕获的时候,不仅把大正则匹配的内容捕获到,而且还可以把小分组匹配的内容捕获到。eg:身份证号码正则捕获

    var reg=/^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X)$/;
    var str="123456199210261521";
    console.log(reg.exec(str));
    //ary=["123456199210261521","12","3456","1992","10","26","15","2","1",index:0,input:"123456199210261521"] 
    //ary[0]-->大正则匹配内容
    //ary[1]--->第一个分组捕获的内容。。。
    
    console.log(str.match(reg));  //--->和exec获取的结果是一样的
    

    可以只捕获到自己想要的内容,不需要全都捕获。(?:)--->在分组中?:的意思是只匹配不捕获
    var reg=/^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;

    match与exec捕获区别:

    var reg=/haha(\d+)/g;
    var str="haha1234haha3456haha5678";
    console.log(reg.exec(str));  //--->["haha1234","1234"...]
    console.log(reg.exec(str));  //--->["haha3456","3456"...]
    console.log(reg.exec(str));  //--->["haha5678","5678"...]
    
    console.log(str.match(reg));  //--->["haha1234","haha3456","haha5678"]
    

    用exec执行三次,每一次不仅把大正则匹配的内容获取到,而且还可以获取第一个分组匹配的内容。

    而match只能捕获到大正则匹配的内容

    相关文章

      网友评论

          本文标题:正则:分组

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