Что лучше всего подходит для регулярных выражений для значений CSS? - PullRequest
0 голосов
/ 10 января 2019

У меня есть Регулярное выражение для анализа значений 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 для этой проблемы, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...