tengo estas cuerdas
linear-gradient(90deg, rgba(196,97,97,1), #222222) linear-gradient(90deg, #222222, #222222) linear-gradient(90deg, #222, #22222280) linear-gradient(90deg, rgba(196,97,97,1), rgba(196,97,97,1))En lugar de 90 grados, también puede haber radial, pero mi pregunta es cómo puedo obtener solo colores de esta cadena para que la salida sea
[rgba(196,97,97,1), #222222] [#222222, #222222] [#222, #22222280] [rgba(196,97,97,1), rgba(196,97,97,1)] Cuando no hay hexadecimal y 2x rgba logré hacerlo con .match(/rgba\(.*?\)/g) pero ¿cómo lo hago, donde hay hexadecimal y rgba, hexadecimal y hexadecimal con opacidad, etc.?
Puedes usar
.match(/rgba\([^()]*\)|#\w+/g)Vea la demostración de expresiones regulares . Detalles :
rgba\([^()]*\) - rgba( subcadena, luego cero o más caracteres que no sean ( y ) y luego a ) char| - o#\w+ - un # carácter y luego una o más letras, dígitos o _ . También puede usar el patrón de caracteres "hexadecimales" aquí, #[a-fA-F0-9]+ .Vea la demostración de JavaScript:
const texts = ['linear-gradient(90deg, rgba(196,97,97,1), #222222)', 'linear-gradient(90deg, #222222, #222222)', 'linear-gradient(90deg, #222, #22222280)', 'linear-gradient(90deg, rgba(196,97,97,1), rgba(196,97,97,1))']; for (const text of texts) { console.log(text, '->', text.match(/rgba\([^()]*\)|#\w+/g)) }