назад до уроку

Регулярний вираз для кольорів в HTML

Створіть регулярний вираз, який шукає HTML-кольори записані у форматі #ABCDEF: спершу символ # за яким слідують 6 шістнадцяткових символів.

Приклад використання:

let regexp = /...ваш регулярний вираз.../

let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678";

alert( str.match(regexp) )  // #121212,#AA00ef

P.S. В цій задачі нам не потрібно враховувати інші формати запису кольорів, як наприклад #123 або rgb(1,2,3) тощо.

Нам потрбіно знайти символ # за яким слідують 6 шістнадцяткових символів.

Шістнадцятковий символ можна описати як [0-9a-fA-F]. Або, якщо застосувати прапорець i , то запис скоротиться до [0-9a-f].

Далі ми позначимо за допомогою квантифікатора, що нам потрібно саме 6 таких шістнадцяткових символів {6}.

І у результаті, отримаємо такий регулярний вираз: /#[a-f0-9]{6}/gi.

let regexp = /#[a-f0-9]{6}/gi;

let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2"

alert( str.match(regexp) );  // #121212,#AA00ef

Проблема в тому, що вищевказаний регулярний вираз знаходитиме код кольору навіть у довших послідовностях.

alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456

Щоб виправити це, ми додамо \b у кінці виразу:

// колір
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456

// не колір
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null