这表示候选,
匹配后面的分隔字符串中的一个,前面的已经有替换为"|"
跟这个一个意思:  var reg3=/(?:jpg|gif|png)$/;

解决方案 »

  1.   

    多谢sohighthesky,可是一定要加这个符号"?:"吗?
    下面的reg4 和 reg3不是等价的吗?var reg3=/(?:jpg|gif|png)$/;
    var reg4=/(jpg|gif|png)$/;
    难道这个是js正则的特殊写法? 麻烦再解答一下~~
      

  2.   

    汗,这里说的http://www.w3cgroup.com/article.asp?id=202要是错了,你找版主去,
      

  3.   

    http://blog.csdn.net/lxcnn/archive/2009/08/20/4464908.aspx
    看下吧 现在正则的好文章不是太多 自己百度正则非捕获分组 挑几篇看看
      

  4.   

    贪婪与懒惰
    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab(为什么第一个匹配是aab而不是ab?简单地说,因为正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The Match That Begins Earliest Wins)。
      

  5.   


    // 楼主看下区别就知道了
    <script type="text/javascript">
    <!--
    var str = "345";
    var reg1 = /(\d+)/g;  // 捕获
    var reg2 = /(?:\d+)/g;// 非捕获
    if(reg1.test(str)){
    alert(RegExp.$1);
    }
    if(reg2.test(str)){
    alert(RegExp.$1);
    }//-->
    </script>