---- 考虑平年情况----------------------
//**********************年份范圍0001-9999*************************
//[1-9]/d{3} 千位數大于0
///d[1-9]/d{2} 百位數大于0
///d{2}[1-9]/d 十位數大于0
///d{3}[1-9] 個位數大于0
//最后為:[1-9]/d{3}|/d[1-9]/d{2}|/d{2}[1-9]/d|/d{3}[1-9]
//********************月份為1,3,5,7,8,10,12的天數為1-31天,MM-dd******************
//(0[13578]|1[02])//(0[1-9]|[12]/d|3[01])
//********************月份為4,6,9,11的天數為01-30天,MM-dd*********************
//(0[469]|11)//(0[1-9]|[12]/d|30)
//********************月份为 2,考虑平年情况,MM-dd*****************************
//02//(0[1-9|1/d|2[0-8])
//平年的表達式為:([1-9]/d{3}|/d[1-9]/d{2}|/d{2}[1-9]/d|/d{3}[1-9])//(((0[13578]|1[02])//(0[1-9]|[12]/d|3[01]))|((0[469]|11)//(0[1-9]|[12]/d|30))|(02//(0[1-9|1/d|2[0-8])))
---- 考虑闰年情况----------------------
//********************闰年的考虑,能被4整除但不能被100整除的年份****************
///d{2}(0[48]|[13579][26]|[2468][048])
//********************闰年,能被400整除的年份。能被400整除的数肯定能被100整除,因此后两位肯定是00,我们只要保证前两位能被4整除即可
//(0[48]|[2468][048]|[3579][26])00
//********************闰年2月分份,MM-dd***************************************
//02//(0[1-9]|[12]/d)
//閏年的表達式為:(/d{2}(0[48]|[13579][26]|[2468][048])|(0[48]|[2468][048]|[3579][26])00)//(((0[13578]|1[02])//(0[1-9]|[12]/d|3[01]))|((0[469]|11)//(0[1-9]|[12]/d|30))|(02//(0[1-9]|[12]/d)))
//最终结果为:
^(([1-9]/d{3}|/d[1-9]/d{2}|/d{2}[1-9]/d|/d{3}[1-9])//(((0[13578]|1[02])//(0[1-9]|[12]/d|3[01]))|((0[469]|11)//(0[1-9]|[12]/d|30))|(02//(0[1-9|1/d|2[0-8]))))|((/d{2}(0[48]|[13579][26]|[2468][048])|(0[48]|[2468][048]|[3579][26])00)//(((0[13578]|1[02])//(0[1-9]|[12]/d|3[01]))|((0[469]|11)//(0[1-9]|[12]/d|30))|(02//(0[1-9]|[12]/d))))$
以上是针对2010/09/09格式的正则表达式
如果要改为2010-10-10格式的,只要把//替换成/-就ok