已更新
我需要你帮助打败正则表达式! 我正在以这样的AJAX响应形式获取外部CSS文件:
$.when($.get("style.css")).done(function(response) {
var myCSS = response;
var patt = new RegExp("#mydiv(.*?)}","g");
var match = myCSS.match(patt);
alert(match);
}
我想在这里尝试实现的是我希望从 #mydiv 到最后一个结束括号} 的所有内容,但出于某种原因 alert(匹配)给我 null 。
最令人烦恼的是我将模式更改为:
var patt = new RegExp("#mydiv(.*?){","g"); // <-- Changed } to {
警告(匹配)返回我应该返回的内容 - &gt; #mydiv .mylink {
或者当我以这样的简单字符串形式表示相同的CSS时:
$.when($.get("style.css")).done(function(response) {
var myCSS = "The same style.css but copy-pasted here";
var patt = new RegExp("#mydiv(.*?)}","g");
var match = myCSS.match(patt);
alert(match);
}
按预期使用我的初始模式。有什么想法我在这里缺少什么?
答案 0 :(得分:1)
}
是正则表达式上的保留字符,您必须使用\
将其转义。如果必须转义"#mydiv(.*)\}"
本身,我认为你所追求的正则表达式为"#mydiv(.*)\\}"
或\
。
答案 1 :(得分:0)
好的,我想我找到了解决方案。
var patt = new RegExp("#" + myID + "(\n|.)*?}","g");
疯狂的谷歌搜索后,堆栈溢出并与社区讨论整夜。我发现问题是JS Regex无法将.
识别为新行,因此您需要改为(\n|.)
。
我不确定这个解决方案是否具有通用性,并且可以在不同的CSS文件上测试它。谢谢你们评论我的帖子!我真的很感谢你的合作!
的最后