日付の正規表現というと、よく次の式を長年使ってました。
^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$
もしくは、
^\d{4}/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])$
javascript のmatch(/.../) で使うなら、
^\d{4}\/(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$
やっぱり、月日を、01 も、1 両方をOKとしたい。ということで。。
"/" 区切りの場合で、"/" のエスケープが必要なら、、
^\d{4}\/(0{0,1}[1-9]|1[012])\/(0{0,1}[1-9]|[12][0-9]|3[01])$