You need the delimiters within the preg_match() call, else it assumes the first char to be so:
/\(\d{1,3}\)-\d{1,3}-\d{1,4}/
Although as you may well know, in PHP, the delimiters don't _have_ to be a '/' char, they can be pretty much any symbol. If I have a few backslashes in a regex string for example, rather than needing to escape them all the time, I'll simply use something like '@' for the delimiters:
preg_match('@\(\d{1,3}\)-\d{1,3}-\d{1,4}@', $foo);
etc etc etc
You might also find start / end anchor points useful for strictness in matching:
preg_match('/^\(\d{1,3}\)-\d{1,3}-\d{1,4}$/', $foo);
This will prevent something like 'foobarbaz(0123)-456-7890bazbarfoo' being a valid entry.
Something you might find useful, I've used it for a few years now, has helped a lot with more complex regex:
The Regex Coach.
Regards,
Ian