У меня есть Регулярное выражение для анализа значений CSS, например,
В:
background: red;
Из:
red
Я использую Модуль CSS Parser NPM , который использует CSSOM . Я обнаружил некоторые ошибки в системе синтаксического анализа этого модуля. Я решил исправить эти ошибки самостоятельно.
Какие ошибки?
Я анализирую CSS этого URL , и он анализирует только 25 @media rule из 71 @media rule ,
Эта ошибка вызвана,
https://github.com/reworkcss/css/blob/master/lib/parse/index.js#L227, регулярное выражение системы синтаксического анализа модуля.
/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/
Я сделал это регулярное выражение,
/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|[^};])+)/
и эта проблема решена хорошо, парсер дал 71 @media rules . После некоторых тестов CSS-документов других веб-сайтов я снова обнаружил еще одну ошибку в этом URL , и он неправильно анализирует это значение свойства (свойство src в правиле @ font-face)
url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAA54AAoAAAAAFmgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAD4AAABWUZFeBWNtYXAAAAE0AAAAOgAAAUriMBC2Z2x5ZgAAAXAAAAouAAAPUFvx6AdoZWFkAAALoAAAACsAAAA2DIPpX2hoZWEAAAvMAAAAGAAAACQOogcgaG10eAAAC+QAAAAPAAAAfNkAAABsb2NhAAAL9AAAAEAAAABAMMg06m1heHA...) format("truetype");font-weight:400;font-style:normal}
Live RegExr результат для вышеуказанного ввода для измененного RegExp: RegExr
Live RegExr результат для вышеуказанного ввода для исходного RegExp модуля: RegExr
И что?
Если я не изменяю исходный RegExp модуля, он делает некоторые неправильные выводы, и когда я изменяю RegExp, выходные данные исправны, но возникают другие ошибки.
Мне нужен лучший RegExp для этой проблемы, спасибо!