Вернуться к уроку

Найдите цвет в формате #abc или #abcdef

Напишите регулярное выражение, которое находит цвет в формате #abc или #abcdef. То есть, символ #, после которого идут 3 или 6 шестнадцатиричных символа.

Пример использования:

var re = /* ваш регэксп */

var str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(re) ); // #3f3 #AA0ef

P.S. Значения из любого другого количества букв, кроме 3 и 6, такие как #abcd, не должны подходить под регэксп.

Регулярное выражение для поиска 3-значного цвета вида #abc: /#[a-f0-9]{3}/i.

Нужно добавить ещё три символа, причём нужны именно три, четыре или семь символов не нужны. Эти три символа либо есть, либо нет.

Самый простой способ добавить – просто дописать в конец регэкспа: /#[a-f0-9]{3}([a-f0-9]{3})?/i

Можно поступить и хитрее: /#([a-f0-9]{3}){1,2}/i.

Здесь регэксп [a-f0-9]{3} заключён в скобки, чтобы квантификатор {1,2} применялся целиком ко всей этой структуре.

В действии:

var re = /#([a-f0-9]{3}){1,2}/gi;

var str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(re) ); // #3f3 #AA0ef #abc

В последнем выражении #abcd было найдено совпадение #abc. Чтобы этого не происходило, добавим в конец \b:

var re = /#([a-f0-9]{3}){1,2}\b/gi;

var str = "color: #3f3; background-color: #AA00ef; and: #abcd";

alert( str.match(re) ); // #3f3 #AA0ef