CSS уровень 4 шестнадцатеричный rgb hsl lch и т.д. проверка значений с помощью регулярных выражений

#css #regex #colors

#css #регулярное выражение #Цвет

Вопрос:

 ^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?((-?d %?[,s] ){2,3}s*[d.] %?))$
 

Я использовал это регулярное выражение ранее, но теперь спецификация изменилась, и rgb поддерживает systax, разделенный пробелом, а также (/ 20%) для альфа-значения. Я не разбираюсь в регулярных выражениях. Итак, кто-нибудь может мне с этим помочь?
Которые поддерживают новый формат, а также поддерживают форматы lch и cmyk.

Комментарии:

1. Чтобы получить помощь, пожалуйста, помогите нам, предоставив образцы для ввода и вывода

2. Я уже предоставил предыдущее регулярное выражение, которое я использую, которое поддерживает синтаксис, подобный rgba(20, 30, 100, .3) , но мне это нужно, а также новая поддержка синтаксиса css color level 4, например rgb(20 30 100 / 20%) . Вот и все.

3. @susanta96 нам нужно больше примеров, чем просто rgba(20, 30, 100, .3) and rgb(20 30 100 / 20%) , вы также упомянули lch и cmyk, но нет примеров для них??

Ответ №1:

Не очень хорошо сформулированный и продуманный вопрос, но этого регулярного выражения должно быть достаточно для ответа на вопрос и быть достаточно для того, что вам нужно:

(?:(rgba?|hsla?|lch|lab|cmyk)((-?s*d*.?d*s*(?:[%]|deg)?)s*,?s*(-?s*d*.?d*s*(?:[%]|deg)?)s*,?s*(-?s*d*.?d*s*(?:[%]|deg)?)s*[,/]?s*(-?s*d*.?d*s*(?:[%]|deg)?))|#[da-fA-F]{6}|#[da-fA-F]{3})