You don't have any regex delimiters, so you should be getting an error message something like the following, if error_reporting is turned on:
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in C:\wamp\www\test\test.php on line 4
While the "traditional" delimiter is the slash, since you are using them as part of your regex, it's simpler to use something else, such as the "#" character:
if (preg_match("#(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d#", $ddate)) {