Задачу уже решил без регекспов, но теперь гложет академический интерес, уже весь вечер бьюсь =)
Нужно сматчить строки из заданного количества цифр (пусть будет 6).
Цифры могут быть разделены произвольным количеством разделителей (пусть будет [-]).
Разделитель должен быть хотя бы один.
Двух разделителей подряд быть не должно.
то есть, матчится:
111-111
11-1111
1-111-11
не матчится:
111111
-111111
111111-
111--111
11-11
1111-1111
Вот такая штука правильно матчит количество, но не учитывает обязательность хотя бы одного разделителя:
(?<=\s)\d(?:[-]?\d){5}(?=\s)
https://regex101.com/r/9sHJSA/1
А вот такая - учитывает обязательность разделителя, но не учитывает количество:
(?<=\s)(?:\d+[-](?=\d))+\d+(?=\s)
https://regex101.com/r/83NFoD/1
Как бы их объединить в одно правило?