gudn tach Philip P.
~(200)\d-[-](0[1-9]|[12][0-9]|3[01]~
da fehlt eine schliessende runde klammer. und die minus-zeichen brauchst du nicht als klasse einzufuehren.
also /^(200)\d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/
wie du den ausdruck auf einen string anwenden kannst, hat Siechfred bereits gesagt. (preg_match())
aber genauer ist es, wenn du das datum mit checkdate() ueberpruefst. (denn 2004-02-31 ist kein korrektes datum)
den string mit dem datum kannst du mit hilfe von substr() in seine bestandteile zerlegen.
prost
seth