匹配 HSL 颜色的饱和度值

Matching the saturation value of a HSL color

我试图只匹配 HSL 颜色的饱和度值,例如给定 hsl(190, 40%, 50%) 作为输入,我想匹配 40/40%。我尝试为此使用环顾四周,但我尝试的一切都没有真正奏效。

我有以下正则表达式,几乎可以匹配我需要的任何 HSL 颜色:/hsla?\(\s*(-?(\d{1,3}|\d{1,3}\.\d+)(deg|%)?)\s*(,\s*|\s+)(-?(\d{1,3}|\d{1,3}\.\d+)%?)\s*(,\s*|\s+)((\d{1,3}|\d{1,3}\.\d+)%?)\s*((,\s*|\s*\/\s*)(0|(0?\.\d+)|1))?\s*\)/gi。我将如何只选择饱和度值?

您自己的正则表达式似乎工作正常,所以只需在其上使用 .exec。 参考:regex.exec.

const hslaRx = /hsla?\(\s*(-?(\d{1,3}|\d{1,3}\.\d+)(deg|%)?)\s*(,\s*|\s+)(-?(\d{1,3}|\d{1,3}\.\d+)%?)\s*(,\s*|\s+)((\d{1,3}|\d{1,3}\.\d+)%?)\s*((,\s*|\s*\/\s*)(0|(0?\.\d+)|1))?\s*\)/i;
const input = 'hsl(190, 40%, 50%)';
const [,,hue,,,,saturation,,,luminosity,,,alpha] = hslaRx.exec(input);
console.log(saturation);

您可以通过将一些正则表达式组转换为不匹配的组来删除所有多余的逗号:(...) => (?:...)