/(ShowMaker|Chapionships|Markerwons|Lee-Broks|All-Mars)\s(\d{4})\s((((([5-9]|10)(\.\d)?)|(11(\.[0-5])?))\sUK)|(((3[5-9]|4[0-4])(\.\d)?|45)\sRU))/
(() => {
const expression = /(ShowMaker|Chapionships|Markerwons|Lee-Broks|All-Mars)\s(\d{4})\s((((([5-9]|10)(\.\d)?)|(11(\.[0-5])?))\sUK)|(((3[5-9]|4[0-4])(\.\d)?|45)\sRU))/;
const brands = ['ShowMaker', 'Chapionships', 'Markerwons', 'Lee-Broks', 'All-Mars'];
const round = (number) => Math.round(number * 10) / 10;
for (const brand of brands) {
console.group(brand);
console.group('UK');
console.time();
for (let size = 5; size <= 11.5; size += 0.1) {
const variant = `${brand} 0000 ${round(size)} UK`;
console.assert(expression.test(variant), variant);
}
console.timeEnd();
console.groupEnd();
console.group('RU');
console.time();
for (let size = 35; size <= 45; size += 0.1) {
const variant = `${brand} 0000 ${round(size)} RU`;
console.assert(expression.test(variant), variant);
}
console.timeEnd();
console.groupEnd();
console.groupEnd();
}
})();
(?!...)
, то можно попробовать заменить -(\d{1,3})-
на -(7([0-689]\d?|7[0-689]?)?|3([02-9]\d?|1[0-46-9]?)?|[0-24-68-9]\d{0,2})-