Prueba con el siguiente código:
Código PHP:
<?php
$var = '011-4959-0200';
$pattern = '/^([0-9]{4})(-)([0-9]{7})$/';
$pattern_2 = '/^([0-9]{3})(-)([0-9]{4})(-)([0-9]{4})$/';
if((preg_match($pattern, $var)) || (preg_match($pattern_2, $var))){
echo('Correcto.');
} else{
echo('Incorrecto.');
}
?>
Si no entiendes algo en especial o simplemente tienes más condiciones para la expresión regular, me indicas y con más gusto te ayudo.
Buena suerte.