^ ((19) | (20)) / d {2}) (- | /)? ((0 [1-9]) | (1 [0-2])) (- | /)? ((( (0 [1-9]) | ([1-2] [0-9])) | (3 [0-1])) $
You can't completely determine the date, such as 31 days can be entered every month.
Below this support 2004-1-1 this format
^ ((19) | (20)) / d {2}) (((((((((/) 0?) | 0) [1-9]) | ((- | /)? 1 [0- 2])) ((((((((- | /) 0?) | ((- | /)? [1-2] [0-9])) | (((- | /)? 3 [0-1])) $