有一个正则表达式:^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$我想问一下。上面的?是什么意思。
[注]?: 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串上面的表达式正好匹配"时间" 为什么2008-012-030不行呢(因为是错的。*_*)

解决方案 »

  1.   


    就是说:0可能出现也可能不出现情况。这两种情况都可匹配到。。
      

  2.   


    (0?[1-9]|1[0-2])这里只能匹配两位数,0?[1-9]匹配01至09,其中0可以有也可以没有。|是或者的意思,1[0-2]匹配10至12
    所以不能匹配012
      

  3.   

    哦,好像明白了。它是这样子匹的 0?[1-9]     或      1[0-2]
    我理解成了0? --------[1-9]     或      1[0-2] 后面的当成了一部分了
    嘿嘿