Я работаю над RegEx
для извлечения функций CSS3 filter
:
let currentStyle = `blur(0em) drop-shadow(rgb(0, 0, 0) 0em 0em 0em) hue-rotate(85deg) grayscale(150%) brightness(90%) url(#mySVGFilter)`;
let fnReg = new RegExp('(^(blur|brightness|contrast|drop-shadow|hue-rotate|grayscale|invert|opacity|saturate|sepia|url).*(?:[(\)\s)|\)])$)');
// returns null or the entire string playing with other variations of the above RegEx
let matches = currentStyle.match(fnReg);
Ожидаемый результат
var matches = [
`blur(0em)`,
`drop-shadow(rgb(0, 0, 0) 0em 0em 0em)`,
`hue-rotate(85deg)`,
`grayscale(150%)`,
`brightness(90%)`,
`url(#mySVGFilter)`
]
Проблема Я не знаю, как заставить его работать на самом деле и как упростить RegEx, учитывая, что есть подгруппы, такие как rgb()
, которые имеют сходный шаблон с другими "основными" группами.