Assuming we're using PCRE regular expressions, I'd probably use:
$date_pattern = '#^(0?[1-9]|1[012])[-/](0?[1-9]|[12]\d|3[01])[-/][1-9]\d{3}$#';
if(preg_match($date_pattern, $date)
{
// valid
}
else
{
// invalid
}
However, this still does not guarantee that a given date is valid (since 02/30/2007 or 11/31/2008 would validate OK but are not actually valid). Depending on the source of the data, you may want to separate it into month, day, and year values and run them through [man]checkdate/man.