preg_match('#^http://video\.cnbc\.com/gallery/\?video=([0-9_-]+)$#', $content);
RegExr Demo
Помимо проблем, упомянутых другими (экранирование ?
и .
и использование #
вместо /
), вы также пропускаете +
после группы чисел ([0-9_-]
), что означает эту группу можно повторить.
Если вам нужно проверить, содержит ли строка ссылку такого типа или нет, удалите ^
и $
:
preg_match('#http://video\.cnbc\.com/gallery/\?video=([0-9_-]+)#', $content);