1.5 KiB
1.5 KiB
Итак, нужно написать выражение для описания цвета, который начинается с "#", за которым следуют 6 шестнадцатеричных символов.
Шестнадцатеричный символ можно описать с помощью [0-9a-fA-F]
. Мы можем сократить выражение, используя не чувствительный к регистру шаблон [0-9a-f]
.
Для его шестикратного повторения мы будем использовать квантификатор {6}
.
В итоге, получаем выражение вида /#[a-f0-9]{6}/gi
.
//+ run
var re = /#[a-f0-9]{6}/gi;
var str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2";
alert( str.match(re) ); // #121212,#AA00ef
Проблема этого выражения в том, что оно находит цвет и в более длинных последовательностях:
//+ run
alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678
Чтобы такого не было, можно добавить в конец \b
:
//+ run
// цвет
alert( "#123456".match( /#[a-f0-9]{6}\b/gi ) ); // #123456
// не цвет
alert( "#12345678".match( /#[a-f0-9]{6}\b/gi ) ); // null