Вы можете использовать предпросмотр для правил проверки конкретных символов и «нормальное» выражение для общей длины.
^FOO(?=(?:-?\d+)+$)[-\d]{3,47}$
Буква FOO
является литералом, и она должна быть началомстрока.Следующий блок - заглядывание ((?=...)
).Это проверяет последующую строку на предмет отсутствия смежных дефисов, а только цифр.Предварительный просмотр не потребляет, поэтому после его завершения двигатель все еще смотрит на конец «FOO».Последний бит выражения указывает на то, что единственными символами, которые следуют за «FOO», являются дефисы или цифры, а максимальный размер составляет от 3 до 47, что составляет максимум 6–50 (за вычетом длины «FOO»).).