How many false matches will you allow? Bozho already suggested the pattern
\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}
But that matches the following questionable cases: 0000-1-1 00:00 (there is no year zero), 2011-0-1 00:00 (there is no month zero), 2011-13-1 00:00 (there is no month 13), 2011-1-32 00:00 (there is no month-day 32) 2011-12-31 24:00 (there is at most one leap second) and 2011-12-31 23:61 (there is at most one leap seond).
You are wanting to parse date-times that are almost, but not quite, in ISO-8601 format. If you can, please use that international standard format.
In one of my programs (a shell script using grep), I've used the following regular expression:
^20[0-9][0-9]-[01][0-9]-[0-3][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]UTC$
I had an extra T and UTC to deal with, was interested only in dates in this century, and parsed with seconds precision. I see I was not so restrictive on hour and minute values, probably because traditional C/C++ conversions can handle them.
I guess you therefore could use something like the following:
\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-6]\d