我正在尝试从样式表中提取@media 规则进行缓存,然后以适当的分辨率在 IE<9 和 JS 中应用。
例如:
.../*default rules*/...
#work-head { background-image: url("/images/work-art-supplies-med.png"); height: 168px; width: 213px; }
}
@media screen and (min-width : 657px) {
.welcome h1 { border: 0; margin-bottom: 0; text-align: center; }
.welcome p { font-size: 13px; font-size: 1.3rem; }
.../*more rules*/...
}
.../*more rules*/...
目前我正在获取最小宽度及其后的所有内容(一直到样式表的末尾):
/657px\)(\s|\n)*\{/
并通过在媒体查询末尾找到双“}}”来获取媒体查询的终点:
/}[^{]*}/
这可行,但它需要两个正则表达式和一些字符串操作来制作每个 IE 样式表,这让我觉得很脏。
我试图避免将 IE 的规则分解成单独的文件以简化维护,我认为我需要一个正则表达式以便我可以在压缩 CSS 之前和之后提取(现在可以,但显然远非如此)最优)。
那么有人可以告诉我如何将这两个表达式组合成一个吗?
基本上:我如何匹配文字或模式与另一个文字或模式之间的所有内容?
此外 - 这需要在 IE<9 中工作,所以我认为先行和后行不是选项(?)
最佳答案
我忘记了这个问题 :-),但万一有人感兴趣:
/657px\)(\s|\n)*\{(.|\n)+?(}[^{]*})/
成功了(几乎)。它在 http://regexpal.com/ 上完美运行, 但在 IE<9 中,匹配的结尾是“} }, , ,} }”,而不是“}}”。
无论如何我都需要对其进行子字符串化,所以没什么大不了的,但我很想知道是否有人知道如何使它在 IE 中以与在正则表达式中相同的方式运行。
关于javascript - 正则表达式捕获所有内容,包括两个模式之间的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13816648/