javascript - 正则表达式捕获所有内容,包括两个模式之间的新行

标签 javascript regex

我正在尝试从样式表中提取@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/

相关文章:

python - 正则表达式和 Pandas : extract partial string on name match

REGEXP 和运算符 .+

javascript - 使用 id 或名称获取文本字段值(在表单中)是否更好?

javascript - 通过某种合并算法从数组中删除重复对象

javascript - 如何在 OpenLayers 5 中删除绘图?

python - 正则表达式为??? (三个相邻的问号)用于 PyCharm 的代码标签

c++ - 如何将 std::regex_match 与 CString 一起使用?

javascript - JavaScript 中的 "export default"是什么?

javascript - 返回 Obj.key1.key2...keyN 的最佳方式是什么?

javascript - 如何从标称字符串中删除 0,但不从 javascript 中的小数中删除