Учитывая ваши образцы и глядя на вашу попытку регулярного выражения, вы можете использовать это регулярное выражение,
^[1-9] *(?:\d *){3}(?:- *)?(?:\d *){4}$
Пояснение:
^
- начало строки
[1-9] *
- начинается с цифры от 1 до 9, за которой следуют дополнительные пробелы (я)
(?:\d *){3}
- сопровождается любой цифрой, за которой следуют дополнительные пробелы и все три раза
(?:- *)?
- После сопоставления четырех цифр может произвольно указываться после дефиса -
с последующими дополнительными пробелами
(?:\d *){4}
- далее следуют еще четыре цифры, за которыми, возможно, следуют пробел (ы)
$
- конец строки
Regex Demo 1
Рабочая демонстрация в регулярном выражении
Edit:
Как упоминалось в комментариях, если вы хотите найти такие строки в большем тексте, вы можете использовать следующее регулярное выражение,
\b[1-9] *(?:\d *){3}(?:- *)?(?:\d *){3}\d\b
Regex Demo 2