Но автор-то вопроса просил не parse_url(), а именно preg_match().
я здесь (на тостере) уже подметил, что местные часто пытаются навязать свое мнение, какой инструмент лучше. В особенности это касается регулярок. Здесь многие их не очень любят.
Но в плане решения задачи, да - мож быть ответ, как ваш, но предпочел parse_url потому как самому ранее нужно было распаршивать урлы и эта пхпшная функция весьма удобная