Как определить, что данная строка является шестнадцатеричным цветным форматом

Самая большая проблема, которую Вы собираетесь иметь, будет заставлять его работать через браузеры.

я думаю, что необходимо сильно рассмотреть, нужен ли Вам действительно он... Google получает много удара для маркера путем создания чего-то вроде этого из-за огромного количества кнопок и языков, в которых они нуждаются; я подозреваю, что большинство сайтов и приложений были бы так же, как богатый, использующий изображение.

компонент с открытым исходным кодом является хорошей идеей, хотя: распространите богатство и усилие широко.

66
задан Peter Mortensen 25 September 2017 в 12:11
поделиться

2 ответа

^#(?:[0-9a-fA-F]{3}){1,2}$

Dissection:

^              anchor for start of string
#              the literal #
(              start of group
 ?:            indicate a non-capturing group that doesn't generate backreferences
 [0-9a-fA-F]   hexadecimal digit
 {3}           three times
)              end of group
{1,2}          repeat either once or twice
$              anchor for end of string

Это будет соответствовать произвольному шестнадцатеричному значению цвета, которое может использоваться в CSS, например # 91bf4a или # f13 .

Примечание: Однако нет поддержки шестнадцатеричных значений цвета RGBA.

138
ответ дан 24 November 2019 в 14:53
поделиться

Незначительное несогласие с другим решением. Я бы сказал

^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$

Причина в том, что это (правильно) захватывает отдельные компоненты RGB. Другое выражение разбило # 112233 на три части: '#' 112 233. Фактически синтаксис '#' (RR GG BB) | (RGB)

Небольшой недостаток - требуется больше обратного отслеживания. При синтаксическом разборе #CCC вы не знаете, что второй C является зеленым компонентом, пока не дойдете до конца строки; при синтаксическом разборе #CCCCCC вы не знаете, что второй C все еще является частью красного компонента, пока не увидите 4-й C.

16
ответ дан 24 November 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: