Двоцифрове шістнадцяткове число можна записати як pattern:[0-9a-f]{2}(припустивши, що задано прапорець pattern:i).
Нам потрібно число NN, а за ним :NN, повторене 5 разів (більше чисел);
Регулярний вираз: pattern:[0-9a-f]{2}(:[0-9a-f]{2}){5}
Тепер продемонструємо, що збіг має захоплювати весь текст: з самого початку до самого кінця. Робиться це через огортання виразу в pattern:^...$.
В підсумку:
let regexp = /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i;
alert( regexp.test('01:32:54:67:89:AB') ); // true
alert( regexp.test('0132546789AB') ); // false (без двокрапок)
alert( regexp.test('01:32:54:67:89') ); // false (5 чисел, має бути 6)
alert( regexp.test('01:32:54:67:89:ZZ') ) // false (ZZ в кінці)