Expressão regular para corresponder a 7 a 12 dígitos; pode conter espaço ou hífen

Estou tentando resolver um problema de expressão regular do PHP há algum tempo, mas simplesmente não consigo fazê-lo. Preciso escrever um regex que corresponda entre 7 e 12 dígitos (0..9) e, opcionalmente, pode haver um único hífen ou um único espaço entre os dígitos adjacentes. Isto é o que eu tenho até agora ...

$match1 = preg_match('/^\d[0-9\-\s]{5,10}\d$/', $number);
$match2 = preg_match('/(-\s|\s-|--|\s\s)/', $number);

Como você pode ver, tenho que usar duas verificações diferentes e ainda não é suficiente para mim, pois posso inserir esta sequência: "1-2-3-4-5"e ainda passará porque há um total de 9 caracteres, mas deve falhar porque existem apenas 5 dígitos.

Qualquer ajuda sobre o assunto seria ótimo, obrigado!

questionAnswers(4)

yourAnswerToTheQuestion