Pues tu problema es lógico, ¿qué te parece usar empty() antes que preg_match() para verificar si lleva algo o no?
Si lo buscas hacer con una expresión regular te adelanto que estás fuera de contexto, pues nada tiene que ver con preg_match(), y si es así entonces pido que muevan tu tema al foro de RegExp.
Pero te adelando que es innecesaria esa comprobación con RegExp, pues con empty() debería bastar para cubrir ese hueco lógico.