Ваше регулярное выражение ^((254|255)[0-9]+){9,15}$
означает, что нужно выбрать не менее 4 цифр (из которых первые 3 должны быть либо 254
или 255
), и все они должны встречаться не менее 9 раз, но не более 15 раз, что будет означатьминимальная длина строки, которая будет соответствовать, должна составлять 36 символов.Который, очевидно, вы не хотите.Ваше регулярное выражение нуждается в небольшой коррекции, когда вам нужно вынуть [0-9]
часть и иметь {9,12}
квантификатор отдельно.Правильное регулярное выражение, которое будет использоваться, должно быть таким:
^(?:(?:254|255)[0-9]{9,12})$
Это регулярное выражение будет соответствовать 254
или 255
отдельно и будет ограничивать оставшееся число, чтобы соответствовать от 9 до 12 (так как вы хотите, чтобы максимальное число совпадалодлиной 15, где 3 числа уже выделены)
Демо
var nums = ['254777123456','255777123456','255777123456123','2557771234561231']
for (n of nums) {
console.log(n + " --> " + /^(?:(?:254|255)[0-9]{9,12})$/g.test(n));
}