Я бы не использовал сплит для этого. Вместо этого используйте это регулярное выражение для извлечения каждого правила:
([\s\S]*?{[\s\S]+?})
Очень просто, но должно работать, пока в самих правилах нет символов {и} (что, я бы ожидал, было бы редкостью). Мое регулярное выражение игнорирует пробелы и переводы строк, пока CSS синтаксически допустим. Я использовал [\s\S]
вместо .
, потому что .
не соответствует переводу строки.
В вашем случае для извлечения правил это будет:
var myCSS = "CSS goes here";
var rules = myCSS.match(/([\s\S]*?{[\s\S]+?})/);
EDIT:
Согласно запросу аскеров, я изменил свое регулярное выражение, чтобы игнорировать селектор, такой как: a {}
. Тем не менее, он все равно поймает a { }
. Я попытаюсь найти решение для этого, но в то же время вам может понадобиться обработать каждое правило и удалить пустые.