Validar Fecha con expresiones regulares en PHP

Esta validación acepta la fecha en formato DD-MM-YYYY, con separadores (/),(-) y (.);

function validarFecha($fecha){
$sep = » [\/\-\.] «;
$req = «#^(((0? [1-9] |1\d|2 [0-8] ){$sep}(0? [1-9] |1 [012] )|(29|30){$sep}(0? [13456789] |1 [012] )|31{$sep}(0? [13578] |1 [02] )){$sep}(19| [2-9] \d)\d{2}|29{$sep}0?2{$sep}((19| [2-9] \d)(0 [48] | [2468] [048] | [13579] [26] )|(( [2468] [048] | [3579] [26] )00)))$#»;
return preg_match($reg, $fecha);
}
//ejm:
if(validarFecha(«12/01/2009»))
{
echo «fecha valida»;
}
else
{
echo «fecha invalida»;
}