(exp) 匹配exp,并捕获文本到自动命名的组里 
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) 
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号 (exp)与(?:exp)区别在哪里?捕获匹配的文本(什么意思?)给此分组分配组号(什么意思?)自动命名的组里是什么意思?(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
依然不理解。能不能用实例代码讲解一下?

解决方案 »

  1.   

    1、(exp)与(?:exp)区别——你上面已经说了啊,前者是捕获符合括号里面规则的匹配子字符串,后者是不捕获。
    2、给此分组分配组号的意思——如果你的正则表达式中有多个括号括起来的,则生成出来的匹配子字符串是个数组,这样就有组号。
    3、自动命名的组——就是匹配出来的子字符串的组号,从1开始:1,2,3...
    4、关于正则表达式如何操作获取匹配出来的子字符串,你看下面的JS代码:var s1 = "{'item_get_response':{'item':{'props':'20418023:157305307;1632501:269068813'}}}";
    var p1 = /\{'props':(.*?')\}/;
    function chkRegpt(str, pattn){
    //根据正则表达式提取内容
      var rst = str.match(pattn);
      if(rst != null){
        return rst[1];
      }else{
        return "...";
      }
    }
    var tt = chkRegpt(s1,p1);
    alert(tt);,输出结果:'20418023:157305307;1632501:269068813'
      

  2.   

    var number = /(?:\d)+/g;

    var number = /(\d)+/g;有什么区别
      

  3.   

    http://www.regexlab.com/zh/regref.htm这个里面讲的还不错,可以看看,然后自己试试,就能了解到了
      

  4.   

    看看这个博客,说的很明白
    http://blog.csdn.net/lxcnn/article/details/4304754