RegEx模式不适用于AJAX响应

时间:2013-02-04 00:59:34

标签: javascript css regex

已更新

我需要你帮助打败正则表达式! 我正在以这样的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);  
}

按预期使用我的初始模式。有什么想法我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

}是正则表达式上的保留字符,您必须使用\将其转义。如果必须转义"#mydiv(.*)\}"本身,我认为你所追求的正则表达式为"#mydiv(.*)\\}"\

答案 1 :(得分:0)

好的,我想我找到了解决方案。

var patt = new RegExp("#" + myID + "(\n|.)*?}","g");

疯狂的谷歌搜索后,堆栈溢出并与社区讨论整夜。我发现问题是JS Regex无法将.识别为新行,因此您需要改为(\n|.)

我不确定这个解决方案是否具有通用性,并且可以在不同的CSS文件上测试它。谢谢你们评论我的帖子!我真的很感谢你的合作!

来源: http://goo.gl/1W55l

的最后