You could come up with:
^\d\ *(?:\(\d+\))?[- \d]+$
See a demo on regex101.com.
Broken down:
^ - an anchor to bind the expression to the beginning of the line
\d - one digit of 0-9
\ * - zero or more spaces
(?:\(\d+\))? - digits in parentheses, made optional
[- \d]+ - characters from the specified class
$ - bind the expression to the end
But quoting from the regex
tag:
Since regular expressions are not fully standardized, all questions
with this tag should also include a tag specifying the applicable
programming language or tool.
Please update your question and apply the used programming language.
As pointed out by @Aminah, the given regex has flaws which can be avoided by using lookaheads, e.g.:
^(?!.*-{2,})\d\ *(?:\(\d+\))?[- \d]+$
The (?!.*-{2,})
makes sure that there are no two consequent slashes allowd.