• JavaScript正则表达式模式匹配(4)——使用exec返回数组、捕获性分组和非捕获性分组、嵌套分组


    使用exec返回数组

    var pattern=/^[a-z]+s[0-9]{4}$/;    
    var str='google 2012';   
    alert(pattern.exec(str));  //返回一个包含字符串的数组
    
    
    var pattern=/^[a-z]+/;    //只匹配到字母
    var str='google 2012';   
    alert(pattern.exec(str));  //只返回google的字符串数组
    
    var pattern=/^([a-z]+)s([0-9]{4})$/;  //使用了分组    
    var str='google 2012';   
    var a=pattern.exec(str);
    alert(a.length);     //返回a的长度 3
    alert(a[0]);         //返回匹配到的整个字符串
    alert(a[1]);         //返回匹配到的第一个分组的字符串
    alert(a[2]);         //返回匹配到的第二个分组的字

    捕获性分组和非捕获性分组

     1 var pattern=/(d+)([a-z])/;  // 这个叫做捕获性分组,所有的分组都捕获返回
     2 var str='123abc';   
     3 var a=pattern.exec(str);
     4 alert(a[0]);         //返回匹配到的整个字符串 123a 
     5 alert(a[1]);         //返回匹配到的第一个分组的字符串 123
     6 alert(a[2]);         //返回匹配到的第二个分组的字符串 
     7 
     8 var pattern=/(d+)(?:[a-z])/;  // 非捕获性分组,只要在不需要捕获返回的分组加上?:
     9 var str='123abc';   
    10 alert(pattern.exec(str));

    嵌套分组

    1 var pattern=/(a?(b?(c?)))/;  // 嵌套分组,从外往内获取
    2 var str='abc';   
    3 alert(pattern.exec(str));
    4 //第一步:a[0],整个匹配到的字符串abc
    5 //第二步:a[1],匹配第一个分组(a?(b?(c?))),abc
    6 //第三步:a[2],匹配第二个分组(b?(c?)),bc
    7 //第四步:a[3],匹配第三个分组(c?),

    前瞻捕获

    1 var pattern=/goo(?=gle)/;  // goo后面必须是gle才能返回goo,这里一定要注意返回的是goo,而不是google
    2 var str='google';   
    3 alert(pattern.exec(str));  
  • 相关阅读:
    解决import tensorflow时发生DLL错误
    解决Docker Container in WSL2 发生DNS错误无法访问网络
    使用过vmware 再开启wsl2闪退处理
    70. Climbing Stairs. Leetcode
    miredo on mac
    解决Runtime Error on LeetCode
    HttpClient Get与Post请求数据
    Ubuntu16.04.1 安装MyCat
    CenterOS中安装Redis及开机启动设置
    ASP.ENT Core Linux 下 为 donet创建守护进程(转载)
  • 原文地址:https://www.cnblogs.com/guoxiangyue/p/8393430.html
Copyright © 2020-2023  润新知