$valid = preg_match('~^thumb_.*\.(jpg|gif|png)$~', $filename) != 0;
Или, если вы действительно хотите, чтобы расширение было необязательным:
$valid = preg_match('~^thumb_.*(\.(jpg|gif|png))?$~', $filename) != 0;
РЕДАКТИРОВАТЬ: В соответствии с комментарием Am на ответ Cletus, вы можете захотеть ограничить подстановочный знак, чтобы избежать совпадения слеш:
$valid = preg_match('~^thumb_[^/]*\.(jpg|gif|png)$~', $filename) != 0;