什么是最适合CSS值的正则表达式?

时间:2019-01-10 10:34:57

标签: javascript css regex parsing

我有一个正则表达式用于解析CSS值,例如

输入:

background: red;

出局:

red

我正在使用{strong> CSSOM 的CSS Parser NPM Module。我在此模块的解析系统上发现了一些错误。我决定自己修复这些错误。

有哪些错误?

我正在解析此URL的CSS,它仅解析 71 @media规则中的 25 @media规则

此错误是由

引起的

https://github.com/reworkcss/css/blob/master/lib/parse/index.js#L227,模块解析系统的正则表达式。

/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/

我做了这个正则表达式,

/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|[^};])+)/

且此问题很好解决,解析器给出了 71条@media规则。在对其他网站的CSS文档进行了一些测试之后,我再次在此URL中发现了另一个错误,并且该错误解析了此属性值(@ font-face规则中的src属性)< / p>

url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAA54AAoAAAAAFmgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAD4AAABWUZFeBWNtYXAAAAE0AAAAOgAAAUriMBC2Z2x5ZgAAAXAAAAouAAAPUFvx6AdoZWFkAAALoAAAACsAAAA2DIPpX2hoZWEAAAvMAAAAGAAAACQOogcgaG10eAAAC+QAAAAPAAAAfNkAAABsb2NhAAAL9AAAAEAAAABAMMg06m1heHA...) format("truetype");font-weight:400;font-style:normal}

上述RegExp更改后的输入的实时RegExr结果:RegExr

上述用于原始RegExp模块输入的实时RegExr结果:RegExr

那又怎样?

如果我不更改Module的原始RegExp,它会产生一些错误的输出,而当我更改RegExp时,输出很好,但是还会发生其他错误。

对于此问题,我需要更好的RegExp,谢谢!

0 个答案:

没有答案