const regex = /^(
\#[\da-f]{3}
|\#[\da-f]{6}
|rgba\(
((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*,\s*){2}
((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*)
(,\s*(0\.\d+|1))
\)
|hsla\(
\s*((\d{1,2}|[1-2]\d{2}|3([0-5]\d|60)))\s*,
\s*((\d{1,2}|100)\s*%)\s*,
\s*((\d{1,2}|100)\s*%)
(,\s*(0\.\d+|1))
\)
|rgb\(
((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*,\s*){2}
((\d{1,2}|1\d\d|2([0-4]\d|5[0-5]))\s*)
|hsl\(
\s*((\d{1,2}|[1-2]\d{2}|3([0-5]\d|60)))\s*,
\s*((\d{1,2}|100)\s*%)\s*,
\s*((\d{1,2}|100)\s*%)
\)
)$/gim;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(
\\#[\\da-f]{3}
|\\#[\\da-f]{6}
|rgba\\(
((\\d{1,2}|1\\d\\d|2([0-4]\\d|5[0-5]))\\s*,\\s*){2}
((\\d{1,2}|1\\d\\d|2([0-4]\\d|5[0-5]))\\s*)
(,\\s*(0\\.\\d+|1))
\\)
|hsla\\(
\\s*((\\d{1,2}|[1-2]\\d{2}|3([0-5]\\d|60)))\\s*,
\\s*((\\d{1,2}|100)\\s*%)\\s*,
\\s*((\\d{1,2}|100)\\s*%)
(,\\s*(0\\.\\d+|1))
\\)
|rgb\\(
((\\d{1,2}|1\\d\\d|2([0-4]\\d|5[0-5]))\\s*,\\s*){2}
((\\d{1,2}|1\\d\\d|2([0-4]\\d|5[0-5]))\\s*)
|hsl\\(
\\s*((\\d{1,2}|[1-2]\\d{2}|3([0-5]\\d|60)))\\s*,
\\s*((\\d{1,2}|100)\\s*%)\\s*,
\\s*((\\d{1,2}|100)\\s*%)
\\)
)$', 'gim')
const str = `#ffffff
#nothing
#AF12AA
rgba(222, 222, 222)
RgBa(72,73,75)
hsl(0, 100%, 100%)
rgba(1024, 1024, 10)
#ffffff
#ffffffasdf
asdf#ffffff
rgba(170,221,255,0.59)
rgba(170,221,255,0.59)asdf
rgb(0, 0, 0)
asdfrgb(0, 0, 0)
rgb(0, 0, 0)asdf
hsla(208, 56%, 46%, 1)
hsla(208, 56%, 46%, 1)asdf
asdfhsla(208, 56%, 46%, 1)
hsl(208,56%,46%)asdf
asdfhsl(208,56%,46%)`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions