请问一下js正则表达式中的?到底是什么意思!
比如身份证验证(验证15位的)!    
/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/
其中()?具体在这个例子中起到了什么作用(意思)
还有一个验证邮箱的!
/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/
其中的(\[?)和(\]?)具体是什么意思的啊
望有高人解释!(小生刚刚学正则)
我有文档的不要拿文档中的定义来忽悠我!只是不理解在具体实例中的意思

解决方案 »

  1.   

    你那个身份证的例子 
    /^\d{6}(\d{2})?\d{2}\d{2}\d{3}[0-9A-Za-z]$/
    这样能看懂么?
      

  2.   

    那行
    我给你举例子
    a?
    表示0或1个a都能匹配a+?
    表示非贪婪匹配。在满足条件的情况下,尽量少的匹配
    比如如果有aaaa的话,他将匹配a(?:a)
    非获取匹配
    表示不被后向引用和分组获取的模式(?!a)\w
    顺序否定环视,表示当前匹配位置不能为a(?=a)\w
    顺序肯定环视,表示当前匹配位置需要为a
    不懂?继续看文档~~如果文档看了不明不白,找《正则表达式必知必会》翻一遍
      

  3.   

    自己动手试一试不就明了?Regexpal - 在线正则表达式验证工具