Expresión regular para que coincida con fechas válidas

Estoy tratando de escribir una expresión regular que valide una fecha. La expresión regular debe coincidir con la siguiente

M / D / AAAA MM / DD / AAAALos meses de un solo dígito pueden comenzar con un cero inicial (p. Ej .: 12/03/2008)Los días de un solo dígito pueden comenzar con un cero inicial (p. Ej .: 2/3/2008) NO PUEDE incluir el 30 de febrero o el 31 de febrero (p. Ej .: 31/02/2008)

Hasta ahora tengo

^(([1-9]|1[012])[-/.]([1-9]|[12][0-9]|3[01])[-/.](19|20)\d\d)|((1[012]|0[1-9])(3[01]|2\d|1\d|0[1-9])(19|20)\d\d)|((1[012]|0[1-9])[-/.](3[01]|2\d|1\d|0[1-9])[-/.](19|20)\d\d)$

Esto coincide correctamente, EXCEPTO todavía incluye 2/30/2008 y 2/31 / 2008.

¿Alguien tiene una mejor sugerencia?

Editar Encontréla respuest en RegExLib

^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$

Coincide con todos los meses válidos que siguen el formato MM / DD / AAAA.

Gracias a todos por la ayuda

Respuestas a la pregunta(15)

Su respuesta a la pregunta