1       (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配 。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 
既然是匹配'industry|industries'   那我'industr(y|ies)'不是更简单
这里指的非获取匹配是值 比如
var val = "1234215";
var reg = /3(?:4\d{3})/;
匹配不到值吗
可我 alert(val.match(reg)[0])依然是有值的啊
2    "?"   当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
既然是非贪婪的 那为什么还要加问号呢   我直接写o{1}不就行了? 
上面几点求解

解决方案 »

  1.   

    既然是匹配'industry|industries' 那我'industr(y|ies)'不是更简单 这是个例子不是每个都是这样的
    "非获取"匹配 与 非"获取"匹配的区别 
    alert(val.match(reg)[0])依然是有值的 当然有值
    下个问题其实只是两种不同的写法而已 这个就更不需要纠结了
      

  2.   

    1:[0]是匹配本身,不是获取匹配到的组
                var val = "1234215";
                var reg = /3(?:4\d{3})/g;
                alert(reg.exec(val)[1])
    ========================================
                var val = "1234215";
                var reg = /3(4\d{3})/g;
                alert(reg.exec(val)[1])
    这两个你试下就知道了2:你举的例子不恰当
                var val = "<div>aaa<div>bbb</div>ccc</div>";
                var reg = /<div>.*?<\/div>/g;
                alert(val.match(reg)[0])
    =============================================
                var val = "<div>aaa<div>bbb</div>ccc</div>";
                var reg = /<div>.*<\/div>/g;
                alert(val.match(reg)[0])
    同样的你试下这两个就知道差别了。
      

  3.   

    var reg = /3(?:4\d{3})/;请问这个/3是什么意思!
      

  4.   


    不能单看/3,要结合最后的那个/, 两个/之间的内容表示javascript的一个正则
    也就是3(?:4\d{3})是一个正则,前后分别加上/,表示正则的开始和结束
      

  5.   

    http://blog.csdn.net/lxcnn